天天看點

.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];
    }
           

繼續閱讀