【发布时间】:2015-07-14 16:18:53
【问题描述】:
我很惊讶我在这里没有看到任何关于此的内容(或者我可能错过了)。解析 CSV 文件时,如果存在没有数据的行,如何/应该如何处理?我说的不是空行,而是空行,例如:
ID,Name,Quantity,Price
1,Stuff,2,5
2,Things,1,2.5
,,,
,,,
,,,
我正在使用 TextFieldParser 处理数据中的逗号、多个分隔符等。我想到的两个解决方案是使用 ReadLine 而不是 ReadFields,但这会消除使用 TextFieldParser 的好处,我假设,因为那样我就必须以不同的方式处理逗号。另一种选择是遍历字段并在所有字段为空时删除该行。这是我所拥有的:
dttExcelTable = new DataTable();
using (TextFieldParser parser = new TextFieldParser(fileName))
{
parser.Delimiters = new string[] { ",", "|" };
string[] fields = parser.ReadFields();
if (fields == null)
{
return null;
}
foreach (string columnHeader in fields)
{
dttExcelTable.Columns.Add(columnHeader);
}
while (true)
{
DataRow importedRow = dttExcelTable.NewRow();
fields = parser.ReadFields();
if (fields == null)
{
break;
}
for (int i = 0; i < fields.Length; i++)
{
importedRow[i] = fields[i];
}
foreach (var field in importedRow.ItemArray)
{
if (!string.IsNullOrEmpty(field.ToString()))
{
dttExcelTable.Rows.Add(importedRow);
break;
}
}
}
}
【问题讨论】:
标签: c# csv textfieldparser