繁体   English   中英

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

[英]data error when reading csv file in C# winforms

我有一个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
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM