我在互联网上搜索了这个并且找不到类似的问题。我正在编写一个从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'以防止发生错误)
答案 0 :(得分:0)
在扩展属性中使用IMEX=1
将所有列视为文本值。没有它,Jet提供程序将根据该列中大多数值的任何类型推断数据类型,这可能不正确。
其次,由于您的数据没有标题行,因此您也应在扩展属性中使用HDR=NO
。