2010-09-16 68 views
1

我試圖從Excel電子表格導入一些數據到使用OleDB的C#應用​​程序中。我用與IMEX=1,HDR=YES選項使用C#/ OLEDB從Excel導入時的值更改

提供商= Microsoft.ACE.OLEDB.12.0的標準連接串;數據源= {0};擴展 屬性= 「Excel的12.0; HDR = YES; IMEX = 1」

我有一列其中的值大部分是文本:TRUE或FALSE。部分地方有一些空白值。當導入發生時,BLANK值被替換爲空字符串。這大概是因爲OleDB將列的數據類型確定爲布爾值,並且不會導入任何非布爾值,如BLANK。

我試過this answer的解決方案,但它沒有奏效。即使當我預先創建DataTable並將其列設置爲全部具有字符串的數據類型時,BLANK值仍然會被刪除。

我試圖在同一個問題中建議註冊表項,但沒有效果。

是否有任何追索權?或者我將不得不嘗試使用COM?我們沒有SpreadsheetGear的預算,因此我不能使用excellibrary,因爲我主要處理.xlsx文件。

在此先感謝

+0

對此有什麼好運?我有類似的問題。 – 2010-11-29 19:33:13

回答

0

嘗試將Excel文件保存爲CSV格式並進行處理。

0

我知道我遲了三年,但這可能有助於某人。所有功勞去Andrew Garrison誰發佈了他的答案here。 您需要修改註冊表設置:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\ 

變化TypeGuessRows0ImportMixedTypesText此項下。

ACE掃描前8行並嘗試猜測列格式。與之後格式不匹配的其他所有內容都將返回爲NULL。將TypeGuessRow設置爲0將強制驅動程序掃描所有行以確定格式(當然,這會影響性能)。 ImportMixedTypes = text指定具有混合格式的列應該作爲文本導入,就像你的情況一樣。