2011-07-15 65 views
1

我已經被要求導入一個excel電子表格,這很好,但我得到一個導入包含數字和字母數字字符的特定單元格的問題。c#Excel導入查詢

的excel例如

 Col 
     A   B    C 
RowFake Address CF11 1XX 
    XX123 8 Fake Address CF11 1XX 

作爲每示例中,當數據集被加載爲導致所述陣列中的空欄的數字字段,其治療的行2,列(A)的上方。

我對OLEDB連接是

var dbImportConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataSource 
       + @";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";") 

在這方面,我已設置的IMEX = 1,這應該解析所有內容作爲串入數據集。此外,如果我改變第1排(A)有'XX123'整個上校(A)成功解析爲字符串!不幸的是,這不會幫助我的情況,因爲excel文件是從外部客戶端傳遞的,他們也建議不要使用標題行來解決我的問題。

我的一個想法在這一點上是當我收到文件編輯文件(以編程方式)插入標題,但再次作爲客戶端可能會更改包含多少列這對我來說不是一個安全的選項。

所以基本上我需要找到一個解決方案來處理電子表格中的當前格式並將所有單元格傳遞到數組中。有沒有人遇到過這個問題?或知道如何解決這個問題?

我等待着你的想法 感謝 斯科特 PS。如果這是不明確就罵

回答

2

嗨有一個叫TypeGuessRows可以更改註冊表設置,告訴Excel來決定它的類型之前掃描所有的列。目前,它似乎被設置爲讀取列中的x行並決定列的類型,例如如果您的第一個x行是整數,並且x + 1是字符串,則導入將失敗,因爲它已經確定這是一個整數列。您可以通過更改註冊表設置決定前仔細閱讀整列..

請參閱本也

http://jingyangli.wordpress.com/2009/02/13/imex1-revisit-and-typeguessrows-setting-change-to-0-watch-for-performance/

+0

非常好。這使我指出了正確的方向。感謝所有回覆的人。 – Scott

0

這不是一個直接的答案,但我想推薦你使用Excel Data Reader ,它是LGPL許可下的開源軟件,是用C#編寫的輕量級和快速庫,用於讀取Microsoft Excel文件('97-2007)。