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); }

  推荐使用第二种

最新文章

  1. web页面直接跳转至其他页面
  2. ajax for in eval()知识点的应用
  3. Node.js高级编程读书笔记 - 5 数据库 - Never
  4. Python 爬虫—— requests BeautifulSoup
  5. 。。。Hibernate中mappedBy属性。。。
  6. Android:WebView中对图片注册上下文菜单
  7. Linux shell 脚本攻略之文件查找与文件列表
  8. 互联网挣钱info
  9. 已经包含了#include &lt;atlcom.h&gt; #include &lt;comutil.h&gt;还是报错
  10. Swift - 使用Media Player播放本地视频,在线视频
  11. web 安全知识
  12. POJ 3507 Judging Olympia
  13. C#第四天
  14. Python字符处理
  15. HDU - 3567 IDA* + 曼哈顿距离 + 康托 [kuangbin带你飞]专题二
  16. SpringBoot之配置
  17. jq的dom操作
  18. [Node.js] 02 - Read Eval Print Loop
  19. 小程序之取标签中内容 例如view,text
  20. zookeeper简绍

热门文章

  1. Eclips安装SVN插件
  2. python学习笔记(四)---python不能输出中文问题
  3. spring boot 之热部署
  4. 201621123006 《Java程序设计》第10周学习总结
  5. Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库
  6. Linux 进程、线程运行在指定CPU核上
  7. linux vi常用操作
  8. SqlServer一些常用函数(持续更新。。。)
  9. 浅谈闭包(Closure)
  10. Minio Bucket 通知试用&amp;&amp;说明