Как записать значение, содержащее запятую в файл CSV в С#?

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

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

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

Например

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

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

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

Ответ 1

Просто поместите ваши данные в обратную косую черту следующим образом: "\" "+ 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 могут содержать запятую ","

Ответ 2

  1. Поля со embedded commas должны быть разделены двойными embedded commas.

    поля:

    1. abc, xyz
    2. pqr

CSV версия:

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

    поле:

    Welcome to "My World"
    

    CSV версия:

    "Welcome to ""My World"""
    

Ответ 3

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

"123,56","A dog, cat and a frog"

Ответ 4

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));
            }
        }

Ответ 5

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

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

Code,Description
Code01,"Val1,Val2,Val3"

Ответ 6

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

string ValueToEscape = "a,b";

"\"" + ValueToEscape + "\""

Выход CSV = a, b