ASP.NET实现读取Excel内容并在Web上显示
程序员文章站
2024-02-24 21:33:46
本文实例讲述了asp.net实现读取excel内容并在web上显示的方法,是非常实用的一个功能,分享给大家供大家参考。具体实现方法如下:
点击事件代码.cs代码如下:...
本文实例讲述了asp.net实现读取excel内容并在web上显示的方法,是非常实用的一个功能,分享给大家供大家参考。具体实现方法如下:
点击事件代码.cs代码如下:
protected void button1_click(object sender, eventargs e) { string strpath = "d:/test.xls"; string mystring = "provider=microsoft.ace.oledb.12.0;data source = '" + strpath + "';extended properties='excel 8.0;hdr=yes;imex=1;'"; //"provider = microsoft.jet.oledb.4.0 ; data source = '" + strpath + "';extended properties=excel 8.0"; oledbconnection cnnxls = new oledbconnection(mystring); oledbdataadapter myda = new oledbdataadapter("select * from [sheet1$]", cnnxls); dataset myds = new dataset(); myda.fill(myds); datagrid1.datasource = myds.tables[0]; datagrid1.databind(); }
注意:
如果使用经典的"provider = microsoft.jet.oledb.4.0 ; data source = '" + strpath + "';extended properties=excel 8.0"会报错:外部表不是预期的格式
这是因为:microsoft.jet.oledb.4.0是microsoft jet引擎,这适用于2003版本(2003之前的没有测试过,所以也不知道能向下适应到哪个版本),而在2007中,微软对其旗下 access 与 excel 的主要文件格式进行修改,并且重命名为 .accdb(access 2007 数据库文件)与 .xlsx(excel 2007 文件),因此未被 microsoft jet 引擎所支持,不过微软也很快的提出了 microsoft office 2007 desktop drivers: data connectivity components 来支持。
因此,解决方法就是把连接字符串中的数据提供者改为 microsoft.ace.oledb.12.0即可。