簡體   English   中英

C#問題從Excel讀取文本

[英]C# problem read text from excel

我試圖使用OLEDB讀取Excel文件。 我可以正確讀取整數,但是當我想讀取文本時會出現問題。

我也嘗試了IMEX = 1,但沒有成功!

這是我的示例代碼:

connectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;IMEX=1;HDR=Yes'");

adapter = new OleDbDataAdapter("SELECT * FROM [" + sheet + "$]", connectionString);

DataSet data= new DataSet();
adapter.Fill(data);

在閱讀.XLSX時,我遇到了類似的問題,這是我在連接字符串中提供的內容,並且可以正常工作。

connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + @";Extended Properties=""Excel 12.0;IMEX=1;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""";

盡管在設置IMEX = 1之前我還沒有遇到這個問題,這可能會有所幫助

設置IMEX = 1指示驅動程序使用導入模式。 在這種狀態下,將注意到注冊表設置ImportMixedTypes = Text。 這將強制將混合數據轉換為文本。 為了使此操作可靠地運行,您可能還必須修改注冊表設置TypeGuessRows = 8。 默認情況下,ISAM驅動程序查看前八行,並根據該采樣確定數據類型。 如果這八行采樣全為數字,則設置IMEX = 1不會將默認數據類型轉換為Text; 它將保持數字。

您必須注意不要隨意使用IMEX = 1。 這是導入模式,因此,如果您嘗試在此模式下追加或更新數據,結果可能無法預測。

IMEX的可能設置是:0是導出模式1是導入模式2是鏈接模式(完整更新功能)

http://support.microsoft.com/kb/194124

采用

connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + @";Extended Properties=""Excel 8.0;IMEX=1;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""";

這在讀取時應該會有所幫助,但如果要寫入則要小心-IMEX = 1表示這是導入模式,使用此設置進行寫入會產生不可預測的結果。

嘗試在Excel工作表的前5行中插入5個虛擬行。 這樣,所有連續的行將被標識為字符串。 您可以進一步進行數據類型轉換。 然后刪除代碼上的5個啞行。

暫無
暫無

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

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