尚學堂百戰程序員之Delphi 連接 Excel

MEX是用來告訴驅動程序使用Excel文件的模式,其值有0、1、2三種,分別代表導出、導入、混合模式。當我們設置IMEX=1時將強制混合數據轉換為文本,但僅僅這種設置並不可靠,IMEX=1只確保在某列前8行數據至少有一個是文本項的時候才起作用,它只是把查找前8行數據中數據類型佔優選擇的行為作了略微的改變。例如某列前8行數據全為純數字,那麼它仍然以數字類型作為該列的數據類型,隨後行裡的含有文本的數據仍然變空。

尚學堂百戰程序員之Delphi 連接 Excel

另一個改進的措施是IMEX=1與註冊表值TypeGuessRows配合使用,TypeGuessRows 值決定了ISAM 驅動程序從前幾條數據採樣確定數據類型,默認為“8”。可以通過修改“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel”下的該註冊表值來更改採樣行數。但是這種改進還是沒有根本上解決問題,即使我們把IMEX設為“1”, TypeGuessRows設得再大,例如1000,假設數據表有1001行,某列前1000行全為純數字,該列的第1001行又是一個文本,ISAM驅動的這種機制還是讓這列的數據變成空。

希望對你有幫助。理論上不改註冊表是沒辦法完美解決問題的。我也鬱悶中。。

用Excel選擇一列數字(好像只能是選擇一列),選擇數據--分列--下一步--下一步--選擇文本--完成。

操作後,基本上已經達到目的,不過如果您有些數字串是以0開頭的,可能會被Excel自以為是的去掉了,這種情況需要自己手動重新添加了.

尚學堂百戰程序員之Delphi 連接 Excel

這樣處理過後所有的數字都是文本,而且不會出現科學技術法,處理過後,可以直接用sql導入,也不需要寫sql語句。

後記:對於大部分轉行的人來說,找機會把自己的基礎知識補齊,邊工作邊補基礎知識,真心很重要。

“我們相信人人都可以成為一個IT大神,現在開始,選擇一條陽光大道,助你入門,學習的路上不再迷茫。這裡是北京尚學堂,初學者轉行到IT行業的聚集地。"


分享到:


相關文章: