1. 程式人生 > >2017-02-23 錯誤資訊:未在本地計算機上註冊“Microsoft.ACE.oledb.12.0”提供程式。

2017-02-23 錯誤資訊:未在本地計算機上註冊“Microsoft.ACE.oledb.12.0”提供程式。

解決辦法:

然後安裝就行了。

這個錯誤經常在進行Excel讀取操作時遇到,這是由於預設安裝的Office中缺少AccessDatabase引擎,關於AccessDatabase引擎的介紹:

Microsoft Access Database Engine 2010 也稱Microsoft Access 2010 資料庫引擎可再發行程式包,該程式用於幫助在 2010 Microsoft Office System 檔案與非 Microsoft Office 應用程式之間傳輸資料。 此下載將安裝一系列元件,幫助在現有的 Microsoft Office 檔案(例如 Microsoft Office Access 2010(*.mdb 和 *.accdb)檔案和 Microsoft Office Excel 2010(*.xls、*.xlsx 和 *.xlsb)檔案)與其他資料來源(例如 Microsoft SQL Server)之間傳輸資料。還支援與現有文字檔案建立連線。 此外,還會安裝 ODBC 和 OLEDB 驅動程式,供應用程式開發人員在開發與 Office 檔案格式連線的應用程式時使用。


另外附上.net中關於連線Excel的連線字串:

string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" + Excel全路徑+";Extended Properties='Excel 12.0;HDR=" + isTrue + ";IMEX=1;'"; 


這裡的isTrue當為True時,表示Excel中第一行為表頭,資料從第二行開始,反之從第一行開始.

如何使用:

DataSet ds = new DataSet();
using (OleDbConnection conn = new OleDbConnection(strConn))
{
      conn.Open();
      string strSql = string.Format("select * from [{0}$]", sheetName);//sheetName為excel中sheet表名。
      using (OleDbDataAdapter myCommand = new OleDbDataAdapter(strSql, conn))
      {
            myCommand.Fill(ds, sheetName);
      }
}
System.Data.DataTable dt = new System.Data.DataTable();
dt = ds.Tables[0].Copy();
return dt;