c # с возможностью передачи данных в csv - PullRequest
98 голосов
/ 10 февраля 2011

Может кто-нибудь сказать мне, почему следующий код не работает. Данные сохраняются в файл CSV, однако данные не разделяются. Все это существует в первой ячейке каждой строки.

StringBuilder sb = new StringBuilder();

foreach (DataColumn col in dt.Columns)
{
    sb.Append(col.ColumnName + ',');
}

sb.Remove(sb.Length - 1, 1);
sb.Append(Environment.NewLine);

foreach (DataRow row in dt.Rows)
{
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        sb.Append(row[i].ToString() + ",");
    }

    sb.Append(Environment.NewLine);
}

File.WriteAllText("test.csv", sb.ToString());

Спасибо.

Ответы [ 21 ]

0 голосов
/ 24 ноября 2013

На случай, если кто-то еще наткнется на это, я использовал File.ReadAllText для получения данных CSV, а затем изменил их и записал обратно с помощью File.WriteAllText .CRLF \ r \ n были в порядке, но вкладки \ t игнорировались, когда Excel открывал их.(Все решения в этой теме до сих пор используют запятую, но это не имеет значения.) Блокнот показал тот же формат в результирующем файле, что и в исходном коде.Дифф даже показал файлы как идентичные.Но я понял, когда открыл файл в Visual Studio с помощью бинарного редактора.Исходный файл был Unicode, но целью был ASCII .Чтобы исправить это, я изменил ReadAllText и WriteAllText с третьим аргументом, установленным как System.Text.Encoding.Unicode , и оттуда Excel смог открыть обновленный файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...