C#导入Excel工作表时发生
我已经在互联网上search这个,并不能真正find像这样的问题。我正在编写一个应用程序,从Excel中获取数据并查看它。 我所有的testing都是正确的,但突然间我发现导入一个包含一组数字的列,然后字母将导致根本不显示包含这些字母的字段
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个或更多连续的字段中,而没有字母的字段。 例如(从顶部的第二个数字包含'',以防止发生错误)
在扩展属性中使用IMEX=1
将所有列视为文本值。 没有它,Jet提供者将根据该列中大多数值的types推断出一个数据types,这可能是不正确的。
其次,由于您的数据没有标题行,因此您应该在扩展属性中使用HDR=NO
。