ここでこれについて何も見ていないことに驚いています(または見逃したかもしれません)。CSV ファイルを解析するときに、データのない行がある場合、どのように処理できますか? 私は空白行について話しているのではなく、たとえば次のような空の行について話している:
ID,Name,Quantity,Price
1,Stuff,2,5
2,Things,1,2.5
,,,
,,,
,,,
私は TextFieldParser を使用して、データ内のカンマや複数の区切り記号などを処理しています。私が考えた 2 つの解決策は、ReadFields の代わりに ReadLine を使用することですが、それでは TextFieldParser を使用する利点が失われると思います。コンマを別の方法で処理する必要があります。もう 1 つのオプションは、フィールドを反復処理し、すべてのフィールドが空の場合に行を削除することです。ここに私が持っているものがあります:
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;
}
}
}
}