读取Excel里面的内容转为DataTable
2024-08-26 15:31:07
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text; namespace ExcelRead
{
class ExcelHelper
{
private static string excelConstr;
private OleDbConnection conn = null;//操作数据库
private OleDbDataAdapter ada = null;//填充dataset
public ExcelHelper(string path)
{
excelConstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties = Excel 12.0";
if (conn == null || conn.State == ConnectionState.Closed)
{
conn = new OleDbConnection(excelConstr);
}
} public DataTable GetDataSource(string sheetName)
{
DataTable dt = new DataTable();
string sql = string.Empty;
sql = "select * from [" + sheetName + "]";
dt = GetDT(sql);
return dt;
} /// <summary>
/// 获取excel数据
/// </summary>
/// <param name="sql">用于查询的sql</param>
/// <returns></returns>
public DataTable GetDT(string sql)
{
DataSet ds = new DataSet();
try
{
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
ada = new OleDbDataAdapter(sql, conn);
ada.Fill(ds);
}
catch (Exception e)
{
throw e;
}
finally
{
conn.Close();
}
return ds.Tables[0];
}
}
}
//获取Excel表里Sheet1的数据
//调用
ExcelHelper _excelhelper = new ExcelHelper("Excel文件路径");
//Excel的sheet名称,后面要跟$符号
_excelhelper.GetDataSource("Sheet1$");
第二种方式
/// <summary>
/// 根据excel的文件的路径提取其中表的数据,不需要传sheet名称只需
///excel路径即可
/// </summary>
/// <param name="Path">Excel文件的路径</param>
private void GetDataFromExcelWithAppointSheetName(string Path)
{
//连接串
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open(); //返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等
DataTable dtSheetName = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" }); //包含excel中表名的字符串数组
string[] strTableNames = new string[dtSheetName.Rows.Count];
for (int k = 0; k < dtSheetName.Rows.Count; k++)
{
strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
} OleDbDataAdapter myCommand = null;
DataTable dt = new DataTable(); //从指定的表明查询数据,可先把所有表明列出来供用户选择
string strExcel = "select * from [" + strTableNames[0] + "]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
dt = new DataTable();
myCommand.Fill(dt); }
推荐使用第二种
最新文章
- web页面直接跳转至其他页面
- ajax for in eval()知识点的应用
- Node.js高级编程读书笔记 - 5 数据库 - Never
- Python 爬虫—— requests BeautifulSoup
- 。。。Hibernate中mappedBy属性。。。
- Android:WebView中对图片注册上下文菜单
- Linux shell 脚本攻略之文件查找与文件列表
- 互联网挣钱info
- 已经包含了#include <;atlcom.h>; #include <;comutil.h>;还是报错
- Swift - 使用Media Player播放本地视频,在线视频
- web 安全知识
- POJ 3507 Judging Olympia
- C#第四天
- Python字符处理
- HDU - 3567 IDA* + 曼哈顿距离 + 康托 [kuangbin带你飞]专题二
- SpringBoot之配置
- jq的dom操作
- [Node.js] 02 - Read Eval Print Loop
- 小程序之取标签中内容 例如view,text
- zookeeper简绍