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