2010年8月20日 星期五

Microsoft Access Database Engine 2010

由於公司有一個使用64位元環境的需求,因此需要弄一套可以在64位元環境上讀取excle檔案的環境
眾所皆知的Jet OleDB 4.0是不能在64位元上面跑的
不過MS剛好在前陣子放了Microsoft Access Database Engine 2010可轉散發套件
因此今天下午被安排進行這東西的測試

以MS的傳統,我已經預期好會有許多奇妙的問題,也買好了泡麵stand by...
不過今天解決的過程異常順利,該說MS真的越來越強了嗎?

閒話不多說
其實這次只改了一個connection string就可以用了,只是內容有點奇怪
Microsoft Access Database Engine 2010安裝完後,網頁上的說明是:

1. 如果您是應用程式的使用者,請參閱應用程式文件,以取得如何使用適當驅動程式的詳細資訊。
2. 如果您是使用 OLEDB 的應用程式開發人員,請將 ConnectionString 屬性的 Provider 引數設定為 “Microsoft.ACE.OLEDB.14.0”
◦如果您連線至 Microsoft Office Excel 資料,請將 "Excel 14.0" 新增至 OLEDB 連接字串的擴充屬性。
3. 如果您是使用 ODBC 連線至 Microsoft Office Access 資料的應用程式開發人員,請將連接字串設定為 “Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=path to mdb/accdb file”
4. 如果您是使用 ODBC 連線至 Microsoft Office Excel 資料的應用程式開發人員,請將連接字串設定為“Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=path to xls/xlsx/xlsm/xlsb file”
移除此下載:

不過,14.0是錯誤的!!
正確的是12.0
我原本的conntion string:
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + p_sExcelPath + ";" +
"Extended Properties=\"Excel 8.0;IMEX=1\"";
修改成如下就可以用了,oledbadapter的銜接還沒測試,不過看起來似乎沒有太大問題
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;" +
"Data Source=" + p_sExcelPath + ";" +
"Extended Properties=\"Excel 12.0;IMEX=1\"";

下班收工,泡麵下次再來吃吧

沒有留言: