2010年8月12日 星期四

EXCEL用IMEX=1讀取資料時仍有NULL的解決方法

ASP .NET 讀取 Excel 資料問題 後,
原本以為設定混合模式後問題就可以解決了。
可是沒想到後來又發生了,查詢了一些文件找到了一個搭配的解決方法。

微軟的技術文件中:如何從 Visual Basic 或 VBA 搭配使用 ADO 與 Excel 資料
指出有關使用混合資料類型的警告,
預設是掃描 Excel 的前 8 列來決定資料類型,所以即使指定 IMEX=1 使用混合模式來讀取值。
但是萬一前 8 列是數值,第 9 列是字串,則第 9 列還是會變成 NULL

解決方法參考微軟的另外一篇技術文件:PRB: Excel 傳回的值當作 NULL 使用 DAO OpenRecordset
更改登錄機碼調整預設掃描的列數
路徑為(JET版本不同可能有些差異)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel
屬性是
TypeGuessRows
改成 0 就是全部掃過一遍。

應該不會再有其他狀況了吧 ^^

沒有留言: