2011-08-04 90 views
0

我寫了一段代碼,通過ado.net讀取數據表中的excel數據。現在我已經看到一個奇怪的行爲,ms excel中的列數據類型被指定爲general,但是如果該特定列的excel的第一行包含一些文本,ado.net將無法讀取該特定列中的數字,如果第一行包含一些數字信息,ado.net無法讀取該特定列的文本數據。這裏是我用來從Excel中讀取數據的代碼。從.net的MS Excel讀取數據

string excelConString = @"Provider=Microsoft.Jet.OLEDB.4.0; 
           Data Source=D:\A.xls; 
           Extended Properties=""Excel 8.0;HDR=YES;"""; 
    var oleDbConnection = new OleDbConnection(excelConString); 

    var cmd = oleDbConnection.CreateCommand(); 

    cmd.CommandText = "select * from [WorkSheet$] where ID>=1500"; 

    OleDbDataAdapter da = new OleDbDataAdapter(cmd); 

    DataTable dt = new DataTable(); 

    da.Fill(dt); 

任何幫助,將不勝感激。

問候 阿赫桑·伊克巴勒

+0

你有沒有嘗試添加的MaxScanRows = 0到連接字符串中的擴展屬性? – patmortech

回答

0

改變你的ConnectionString以

string excelConString = @"Provider=Microsoft.Jet.OLEDB.4.0; 
          Data Source=D:\A.xls; 
          Extended Properties=""Excel 8.0;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""" 
+0

不能解決問題 –

+0

我還在編輯 - 你嘗試過,包括IMEX = 1嗎? – Yahia

+0

你我也試過,但也沒有解決問題 –