我正在使用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());
如何解决这个问题?