Я удивлен, что я ничего не видел об этом здесь (или, может быть, я пропустил это). При анализе CSV-файла, если есть строки без данных, как это сделать/должно быть обработано? Я не говорю о пустых строк, но пустые строки, например:Игнорирование строк 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;
}
}
}
}