запятая (,) разделяет строку при экспорте в XL в формате CSV С#

Я новичок в C #, я экспортирую некоторые данные на лист XL в формате CSV. Мои данные содержат столбец полного имени, в котором данные похожи (Джон, Делорес «Саттон»). Когда я экспортирую это в XL, он делит данные на два столбца (или вкладки), например Tab1: John и Tab2: Delores "Sutton" из-за запятой (,). Я хочу

Если я использую приведенный ниже код

string F1 = base.GetColumnText(column, columnValue); //ex: John, Delores \"Sutton\""
string F2 = string.Format("\"{0}\"", F1); //ex: "\"John, Delores\"Sutton\"\""
streamWriter.Write(F2); //ex output in XL is: John, Delores Sutton""

Вывод в формате XL:

Джон, Делорес Саттон""

Но я хочу это как:

Джон, Делорес «Саттон»


person Naveen Reddy    schedule 13.11.2012    source источник
comment
почему бы не экспортировать данные как разделители вертикальной черты или разделители табуляции, чтобы обойти эту проблему?   -  person Chris    schedule 14.11.2012


Ответы (2)


Чтобы представлять двойные кавычки в CSV, вам нужны двойные двойные кавычки, и все должно быть заключено в двойные кавычки, чтобы текстовый вывод выглядел так:

"John, Delores ""Sutton"""

Поэтому вам нужно будет найти и заменить текст, чтобы удвоить двойные кавычки...

F1 = F1.Replace("\"", "\"\"");

Затем сделайте свой формат, чтобы окружить текст кавычками.

var F2 = string.Format("\"{0}\""), F1);

Сообразительный?

person iMortalitySX    schedule 13.11.2012
comment
Потрясающе Это идеально! Большое спасибо за быстрый ответ. Я не ожидал так быстро. Вы лучшие ребята.. :) - person Naveen Reddy; 14.11.2012

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

Существует ряд правил создания CSV-файлов. Я написал очень полный класс для чтения и записи файлов CSV и представил код в своей статье Чтение и запись файлов CSV в C#. Возможно, вы захотите это проверить.

person Jonathan Wood    schedule 13.11.2012