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

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

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

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

Например

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

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

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


person user1027129    schedule 11.11.2011    source источник
comment
возможный дубликат Работа с запятыми в файле CSV   -  person slugster    schedule 13.11.2011
comment
Что ** не экспортируется правильно. значит? Обычно вы заключаете данные в кавычки, но это зависит от того, кто читает файл, а не от того, кто его записывает. Я всегда предлагаю вам вместо этого использовать разделители табуляции, тогда вам не придется беспокоиться о запятых.   -  person Nick.McDermaid    schedule 04.01.2018
comment
Возможный дубликат Работа с запятыми в файле CSV   -  person Liam    schedule 11.07.2019


Ответы (5)


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

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 могут содержать запятую ","

person Anh Hoang    schedule 27.03.2015
comment
Но если мои данные похожи на abc, def, то это не работает, как вы объясняете. он дает один столбец с abc, def и второй столбец со значением def. Я не знаю, как с этим справиться. - person S. Deshmukh; 25.10.2018
comment
Вы должны заменить один на два в ваших данных. - person Manoj Mohan; 09.01.2019

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

    поля:

    1. abc, xyz
    2. pqr

версия CSV:

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

    поле:

    Welcome to "My World"
    

    версия CSV:

    "Welcome to ""My World"""
    
person BrainCoder    schedule 31.12.2012

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

"123,56","A dog, cat and a frog"
person Zesar    schedule 11.11.2011

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

Бывший. У меня есть два столбца Код и Описание со значениями Код01 и Значение1, Значение2, Значение3. Чтобы создать csv с заданными данными, напишите строку ниже в блокноте и сохраните ее с расширением csv.

Code,Description
Code01,"Val1,Val2,Val3"
person Ravi Pipaliya    schedule 19.04.2018

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

string ValueToEscape = "a,b";

"\"" + ValueToEscape + "\""

Выход CSV = а, б

person Nagaraju Pasapula    schedule 24.02.2018