簡體   English   中英

使用C#/ OLEDB從Excel導入時值更改

[英]Values changing when importing from Excel with C#/OLEDB

我正在嘗試使用OleDB將一些數據從Excel電子表格導入到C#應用程序中。 我將標准連接字符串與IMEX=1,HDR=YES選項一起使用

Provider = Microsoft.ACE.OLEDB.12.0;數據源= {0};擴展屬性=“ Excel 12.0; HDR = YES; IMEX = 1”

我有一列的值主要是文本:TRUE或FALSE。 在途中,有兩個BLANK值。 導入時,將BLANK值替換為空字符串。 據推測,這是因為OleDB確定列的數據類型為布爾型,並且不導入任何非布爾值,例如BLANK。

我嘗試了此答案中的解決方案,但沒有成功。 即使當我預先創建DataTable並將其列都設置為具有字符串數據類型時,BLANK值仍會繼續被刪除。

我曾嘗試破解同一問題中建議的注冊表項,但沒有任何效果。

有沒有追索權? 還是我將不得不嘗試使用COM? 我們沒有SpreadsheetGear的預算,因為我必須主要處理.xlsx文件,所以我不能使用Execbrary

提前致謝

我知道我遲到了三年,但這可能會對某人有所幫助。 一切歸功於安德魯加里森( Andrew Garrison) ,他在這里發表了答案。 您需要修改注冊表設置:

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

在此鍵下,將TypeGuessRows更改為0 ,將ImportMixedTypes更改為Text

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM