导入Excel工作表时出现C#问题

时间:2016-11-30 21:18:00

标签: c# excel

我在互联网上搜索了这个并且找不到类似的问题。我正在编写一个从Excel获取数据并查看它的应用程序。 我的所有测试都是正确的,但突然我发现导入一行包含一行数字然后字母的列将导致不显示包含这些字母的字段

PathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + FilePath + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";";

        OleDbConnection conn = new OleDbConnection(PathConn);
        System.Data.DataTable dtSchema = new System.Data.DataTable();

        conn.Open();
        dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
        string Sheet1 = dtSchema.Rows[0].Field<string>("TABLE_NAME");

        conn.Close();
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + Sheet1 + "]", conn);
        DataSet ds = new DataSet();
        myDataAdapter.Fill(ds);

第一个数据集是常规结果

7841
7847s
2344
2262
7738
JD32916
JD329161
JD318161
JD31716
JD7643
JD21116
7194

第二个数据集是有问题的结果(注意我从“7847s”删除了's')

7841
7847
2344
2262
7738






7194

如你所见,其中包含字母的所有字段都消失了, 它只发生在有5个或更多连续字段但没有字母的情况下。示例(顶部的第二个数字包含's'以防止发生错误)

1 个答案:

答案 0 :(得分:0)

在扩展属性中使用IMEX=1将所有列视为文本值。没有它,Jet提供程序将根据该列中大多数值的任何类型推断数据类型,这可能不正确。

其次,由于您的数据没有标题行,因此您也应在扩展属性中使用HDR=NO