在C#winforms中读取csv文件时出现数据错误

我有一个C#winforms正在读取csv文件中的列。 它读取4列中的3列正确。 csv文件中的第4列是S4 ,但数据集显示为4

代码是:

 string conn = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0; Data" + "Source={0}; Extended Properties=""text;HDR=YES;FMT=DELIMITED""", strDirectoryPath); OleDbConnection oleDBConn = new OleDbConnection(conn); oleDBConn.Open(); OleDbDataAdapter da = new OleDbDataAdapter("Select * FROM [" + strFileName + "]", conn); DataSet ds = new DataSet(); da.Fill(ds); 

csv数据样本是:

 AA0013 Incident Incident S4 AA0016 Incident Incident S3 AA0017 Incident Incident S3 AA0023 Incident Incident S3 AA0076 Issue Issue S3 AA0079 Incident Incident S6 AA0082 Issue Issue S6 AA0084 Incident Incident S6 AA0085 Incident Incident S6 

是什么导致这种情况,我该如何解决?

这是因为OLEDB提供程序有时会自动检测列的数据类型,并尝试将该列中的所有值转换为它检测到的特定数据类型。 要解决此问题,您需要指定schema.ini文件,该文件将保存有关每列及其数据类型的信息,以便OLEDB不会尝试将任何列隐式转换为其自己喜欢的数据类型:)…

这是完整的指南.. http://www.aspdotnetcodes.com/Importing_CSV_Database_Schema.ini.aspx

问候。

最简单的方法是手动解析文件而不使用数据库连接。

  string[] lines = File.ReadAllLines(path); foreach(string row in lines) { string[] data = row.Split(","); //Data processing goes here } 

请注意,“,”是数据分隔符,您可以使用其他分隔符,例如“”或“;”