Пример:
- Значение1,значение2,Значение3
- "Val1","val2","val3"
- "Значение1",Значение2,Значение3,"Значение4"
- "Значение","Значение1,Значение2","Значение3"< /p>
В настоящее время я прочитал текстовый файл с помощью средства чтения потоков и записал заголовки в таблицу данных, а затем с помощью цикла foreach вставлю все строки в таблицу данных.
Сначала я разделяю столбцы на основе запятой.
Но формат с двойными кавычками (ПРИМЕР 4) в одном столбце приводит к ошибке (Входной массив длиннее, чем количество столбцов в этой таблице.), поэтому я запрограммировал if else, если столбец имеет двойные кавычки, он перейдет к условию if, иначе он перейдет к условию else, как показано в приведенном ниже коде. Но это влияет на пример 3
Поскольку он вставляет значение как
Result
Ожидаемый результат:
Ожидаемый результат
Мой код:
Код: Выделить всё
DataTable csvData = new DataTable();
string[] lines = File.ReadAllLines(D:\Filepath\Filename.txt);
foreach (string line in lines)
{
if (line.Contains("\""))
{
col = line.Split('\"');
col = Array.FindAll(col, isNotCommaHeader).ToArray();
col = col.Skip(1).ToArray();
col = col.Take(col.Count() - 1).ToArray();
}
else
{
col = line.Split(',');
}
csvData.Rows.Add(col);
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... in-c-sharp