从.net中的MS Excel读取数据

时间:2011-08-04 12:21:18

标签: c# excel ado.net

我编写了一段代码,通过ado.net读取数据表中的excel数据。现在我看到了一个奇怪的行为,ms excel中的列数据类型被指定为general,但如果该特定列的excel的第一行包含一些文本,则ado.net无法读取该特定列中的数字,如果第一行包含一些数字信息,则ado.net无法读取该特定列的文本数据。这是我用来从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);

任何帮助都将不胜感激。

此致 Ahsan Iqbal

1 个答案:

答案 0 :(得分:0)

将您的连接字符串更改为

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"""