Как записать значение, которое содержит запятую в CSV-файл в C #? - PullRequest
15 голосов
/ 11 ноября 2011

Я использую таблицу данных для хранения данных.

Я экспортирую данные из таблицы данных в файл CSV.

Иногда могут быть значения, содержащие запятую (,), поэтому значения не экспортируются правильно.

Например

Рассмотрим значение "9,11,32". Я должен экспортировать как таковой.

Но когда я делаю первый столбец conatins 9, то в следующем столбце 11.

Я хочу отобразить 9,11,32 в том же столбце в файле CSV. Как мне это сделать?

Ответы [ 6 ]

19 голосов
/ 27 марта 2015

Просто поместите ваши данные в обратную косую черту следующим образом: "\" "+ yourdata +" \ "".Посмотрите на пример ниже:

StringWriter csv = new StringWriter();
// Generate header of the CSV file
csv.WriteLine(string.Format("{0},{1}", "Header 1", "Header 2"));
// Generate content of the CSV file
foreach (var item in YourListData)
{
    csv.WriteLine(string.Format("{0},{1}", item.Data1, "\"" + item.Data2 + "\""));
}

return File(new System.Text.UTF8Encoding().GetBytes(csv.ToString()), "application/csv", string.Format("{0}{1}", "YourFileName", ".csv"));

В примере: Ваши данные2 могут содержать запятую ","

12 голосов
/ 31 декабря 2012
  1. Поля с embedded commas должны быть разделены двойными кавычками.

    поля:

    1. abc, xyz
    2. pqr

CSV версия:

"abc, xyz" , pqr

Поля, содержащие double quote символов, должны быть заключены в двойные кавычки, а каждый из встроенных двойных кавычек должен быть представлен парой последовательных двойных кавычек.

поле:

Welcome to "My World"

CSV версия:

"Welcome to ""My World"""
6 голосов
/ 11 ноября 2011

Если у вас есть запятая в данных, которую вы должны поместить в CSV, то http://tools.ietf.org/html/rfc4180 говорит использовать цитаты как:

"123,56","A dog, cat and a frog"
2 голосов
/ 28 апреля 2018
StringBuilder sb = new StringBuilder();          
        foreach (DataColumn col in dt.Columns)
        {
            if (col.ColumnName.Contains(","))
            {
                sb.Append(String.Format("\"{0}\",", col.ColumnName));
            }
            else
            {
                sb.Append(String.Format("{0},", col.ColumnName));
            }
        }
1 голос
/ 19 апреля 2018

Запишите разделенное запятыми значение между двойными кавычками без пробела, чтобы создать CSV с одним столбцом для значений, разделенных запятой.

Ex. У меня есть две колонки Код & Описание Со значениями Код01 & Val1, Val2, Val3 . Чтобы создать CSV с данными данными, напишите в блокноте строку ниже и сохраните ее с расширением CSV.

Code,Description
Code01,"Val1,Val2,Val3"
0 голосов
/ 24 февраля 2018

Поместите значение в двойные кавычки.

string ValueToEscape = "a,b";

"\"" + ValueToEscape + "\""

Выход CSV = a, b

...