/// <summary>
/// 读取Excel中数据
/// </summary>
/// <param name="strExcelPath"></param>
/// <param name="tableName"></param>
/// <returns></returns>
public static DataTable GetExcelTableByOleDB(string strExcelPath, string tableName)
{
try
{
DataTable dtExcel = new DataTable();
//数据表
DataSet ds = new DataSet();
//获取文件扩展名
string strExtension = System.IO.Path.GetExtension(strExcelPath);
string strFileName = System.IO.Path.GetFileName(strExcelPath);
//Excel的连接
OleDbConnection objConn = null;
switch (strExtension)
{
case ".xls":
objConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 8.0;HDR=yes;IMEX=1;\"");
break;
case ".xlsx":
objConn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelPath + ";" + "Extended Properties=\"Excel 12.0;HDR=yes;IMEX=1;\"");//此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串) 备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数,"HDR=No;"正好与前面的相反。"IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。
break;
default:
objConn = null;
break;
}
if (objConn == null)
{
return null;
}
objConn.Open();
//获取Excel中所有Sheet表的信息
//System.Data.DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
//获取Excel的第一个Sheet表名
// string tableName1 = schemaTable.Rows[0][2].ToString().Trim();
string strSql = "select * from [" + tableName + "$]";
//获取Excel指定Sheet表中的信息
OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
OleDbDataAdapter myData = new OleDbDataAdapter(strSql, objConn);
myData.Fill(ds, tableName);//填充数据
objConn.Close();
//dtExcel即为excel文件中指定表中存储的信息
dtExcel = ds.Tables[tableName];
return dtExcel;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + "\r\n" + ex.StackTrace);
return null;
}
}

调用:

string excelFilePath = @"C:\Users\Administrator\Desktop\OpQuoteDefinition\ExcelOLEDBopDemo\bin\Debug\20171102价格导入表格物料信息.xls";
string excelSheetName = @"Sheet1";
DataTable tb= GetExcelTableByOleDB(excelFilePath, excelSheetName);

其它相关参考:导入excel错误:外部表不是预期的格式 解决方案

 
 

最新文章

  1. Jquery.load() 使用
  2. js基础练习二之简易日历
  3. 斐波那契堆(二)之 C++的实现
  4. js里面的等于号--
  5. oracle 删除表、数据
  6. 开发版本控制git
  7. Java 自带性能监控工具:监视和管理控制台jconsole的使用
  8. chrome扩展——Postman
  9. linux tee 命令详解
  10. C# - 使用ConfigurationManager保存数据到App.config
  11. OpenGL---------BMP文件格式
  12. A tutorial on Principal Components Analysis | 主成分分析(PCA)教程
  13. 压测过程中,获取不到redis连接池,发现redis连接数高
  14. VMware5.5-虚拟机的迁移和资源分配
  15. 解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。
  16. vue各种实例集合
  17. Class &#39;com.mchange.v2.c3p0.ComboPooledDataSource&#39; not found [config set
  18. 生成Markdown目录 字符串解析 MD
  19. geoserver 源码介绍
  20. python自动化之word文档

热门文章

  1. String类的详细
  2. Few-shot Object Detection via Feature Reweighting (ICCV2019)
  3. 关于JDK源码:我想聊聊如何更高效地阅读
  4. Java程序在内存中运行详解
  5. 图解 Spring:HTTP 请求的处理流程与机制【2】
  6. 成功的面对对象语言的五个基本特性——Alan Kay
  7. c 程序之 最大公约数 和 最小公倍数
  8. Redis集群生产环境源码安装
  9. css4——浮动
  10. Python如何爬取实时变化的WebSocket数据