2010年8月26日 星期四

Microsoft.ACE.OLEDB.12.0 讀excel 2010 64bit 儲存格格式

安裝了office 2010 64 bit後, 想要在 sql2008 64bit 測看看 用openrowset讀取excel的狀況

先建了一個excel檔 test.xlsx

里頭只新增了一行資料,共三個欄位, 如下圖

其中, 欄位C 實際存放的數值是0, 透過儲存格格式的自訂,將之轉換為 - 顯示


測試的語法如下
select * from
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Format=xlsx;HDR=NO;IMEX=1;Database=C:\test.xlsx','SELECT * FROM [工作表1$] ')

結果回傳如下
 

第三個欄位應該要回傳0才對,

切回SQL 2005 32 bit, 用Microsoft.Jet.OLEDB.4.0測試

select * from
OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Format=xls;HDR=NO;IMEX=1;Database=C:\test.xls','SELECT * FROM [工作表1$] ')   

結果回傳如下

回傳結果第三欄是0無誤

看來 Microsoft.ACE.OLEDB.12.0讀到格式後的值
看來是driver的限制, 因為在32bit環境上使用Microsoft.ACE.OLEDB.12.0仍有此問題

沒有留言:

張貼留言

publish error allowDefinition='MachineToApplication'

一個老舊的aspx web form專案,調了一些功能建置成功,但進行部署時顯示以下錯誤。 在應用程式層級之外使用註冊為 allowDefinition='MachineToApplication' 的區段發生錯誤。錯誤的原因可能是虛擬目錄尚未在 IIS 中設定為...