先建了一個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$] ')
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仍有此問題
沒有留言:
張貼留言