欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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即可