天天看点

.net 导入Excel2007

Office2007出来后,原本2003的链接字符串要改了。

Excel2003  使用   string sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + exaddress + ";" + "Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";

Excel2007 使用    string sConnectionString= "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + exaddress+ ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1';";

2007向下兼容。

但如果发现提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序” ,请下载2007 Office system 驱动程序:数据连接组件安装

http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

如果是64位系统,请在IIS,对应的应用程序池,“高级设置” 启用 32位应用程序。

.net 导入Excel2007

否则,依然会提示上面的错误。

导入的完整代码如下:

public static DataTable GetExcelToDataTableBySheet(string FileFullPath, string SheetName)
    {
        //string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接只能操作Excel2007之前(.xls)文件
        string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"; //此连接可以操作.xls与.xlsx文件
        System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(strConn);
        conn.Open();
        DataSet ds = new DataSet();
        System.Data.OleDb.OleDbDataAdapter odda = new System.Data.OleDb.OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", SheetName), conn);                    //("select * from [Sheet1$]", conn);
        odda.Fill(ds, SheetName);
        conn.Close();
        return ds.Tables[0];
    }
           

继续阅读