根据字段值分隔解析csv记录

时间:2016-12-29 14:50:43

标签: c# .net csvhelper

我正在使用csvhelper读取csv文件记录,但我注意到有时csv字段值由空格(\ t)分隔,有时候 字段值以逗号分隔。

现在我有6列,但由于字段值由空格分隔,我将获得单列中的所有记录。因此,在为第二个字段获取列值时,我得到错误:索引处的字段' 1'不存在。

所以我在阅读记录时遇到错误:

DataTable dt = new DataTable();

CsvReader reader = new CsvReader(sr);
reader.Configuration.HasHeaderRecord = true;
reader.Configuration.IgnoreHeaderWhiteSpace = true;
reader.ReadHeader();
var headers = reader.Parser.RawRecord.Split(new[] { ',', '\t' },
    StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).
Where(x => !string.IsNullOrWhiteSpace(x)).ToArray(); //6 columns


foreach (var header in headers) {
    DataColumn col = new DataColumn();
    col.ColumnName = header;
    dt.Columns.Add(col);
}
reader.Read();

do {
    DataRow drRow = dt.NewRow();
    for (int iThColumn = 0; iThColumn < headers.Count(); iThColumn++) {
        var data =  reader.GetField<string>(iThColumn);

        if (string.IsNullOrEmpty(data))
            drRow[iThColumn] = null;
        else
            drRow[iThColumn] = reader.GetField<string>(iThColumn);

    }
    dt.Rows.Add(drRow);

} while (reader.Read()); 

如何解决这个问题?

0 个答案:

没有答案