php判断版本根据版本调用不同,C#_C#自动判断Excel版本使用不同的连接字符串,用OLEDB通过设置连接字符串可 - phpStudy...

C#自动判断Excel版本使用不同的连接字符串

用OLEDB通过设置连接字符串可以像读取sqlserver一样将excel中的数据读取出来,但是excel2003和excel2007/2010的连接字符串是不同的。

///

/// 把数据从Excel装载到DataTable

///

/// 带路径的Excel文件名

/// 工作表名

/// 将数据存入的DataTable

///

public DataTable ExcelToDataTable(string pathName, string sheetName)

{

DataTable tbContainer = new DataTable();

string strConn = string.Empty;

if (string.IsNullOrEmpty(sheetName)) { sheetName = "Sheet1"; }

FileInfo file = new FileInfo(pathName);

if (!file.Exists) { throw new Exception("文件不存在"); }

string extension = file.Extension;

switch (extension)

{

case ".xls":

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

break;

case ".xlsx":

strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'";

break;

default:

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

break;

}

//链接Excel

OleDbConnection cnnxls = new OleDbConnection(strConn);

//读取Excel里面有 表Sheet1

OleDbDataAdapter oda = new OleDbDataAdapter(string.Format("select * from [{0}$]", sheetName), cnnxls);

DataSet ds = new DataSet();

//将Excel里面有表内容装载到内存表中!

oda.Fill(tbContainer);

return tbContainer;

}

这里需要注意的地方是,当文件的后缀名为.xlsx(excel2007/2010)时的连接字符串是"Provider=Microsoft.ACE.OLEDB.12.0;....",注意中间红色部分不是"Jet"。相关阅读:

Win7系统添加打印机无Print Spooler服务无注册表解决方法

在linux中使用包管理器安装node.js

Bootstrap下拉菜单效果实例代码分享

基于js实现投票的实例代码

探讨.get .post .ajax ztree 还有后台servlet传递数据的相关知识

element.style覆盖样式因优先级顺序导致的解决方法

js与运算符和或运算符的妙用

编写安全 PHP应用程序的七个习惯深入分析

举例讲解C#中自动实现的属性

详述JavaScript实现继承的几种方式(推荐)

在支持HTML5的浏览器上运行WebGL程序的方法

css自适应宽度 多种方法实现宽度自适应的水平居中

24个canvas基础知识小结

Bootstrap每天必学之下拉菜单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值