C # создание CSV-файла, чтобы содержимое одного поля переносилось в ячейку

#c# #excel

#c# #excel

Вопрос:

У меня есть две базы данных, одна из которых является основной, а другая — подробной, table1 является основной, а table2 — подробной. в таблице 2 есть комментарии и даты, когда комментарии были добавлены.

Моя проблема: я должен экспортировать CSV-файл (C #) и поместить все комментарии в одно поле. Я могу это сделать, однако мой босс импортирует это в Excel и хотел бы иметь возврат каретки (или что-то еще) в конце каждого комментария, чтобы они помещались в одну ячейку

Комментарии отформатированы следующим образом: «11/10/2011: комментарий 1 11/10/2011: второй комментарий«

когда оно будет импортировано в Excel, я хотел бы, чтобы комментарии автоматически переносились, чтобы они выглядели так в ячейке Excel:

10.11.2011: комментарий 1 10.11.2011: комментарий второй

Я пробую r и n, но затем excel помещает комментарий в отдельную ячейку.

любая помощь была бы отличной.

Комментарии:

1. Посмотрите на мой ответ ниже, но если у вас все еще есть проблемы, попробуйте опубликовать код C #, который завершается с ошибкой…

2. Вы имеете в виду, что хотите, чтобы текст в ячейке был перенесен в ячейку? Возможно, более выгодно показывать снимок экрана того, что вы хотите, потому что два комментария (до и после импорта в Excel) выглядят точно так же. И да r и n и, скорее всего, даже t поместит их в отдельную ячейку

3. Хорошо, ошибки нет 🙂 ваш второй комментарий верен после импорта в Excel Я хотел бы, чтобы одно из моих полей переносилось в определенное место, я не уверен, как опубликовать снимок экрана здесь?

Ответ №1:

Правильный ответ — перевод строки, или n. Вы также должны убедиться, что ячейка имеет:

    myCell.Style.IsTextWrapped = true;
  

Ответ №2:

Если вы экспортируете в .csv, то заключите каждое поле в двойные кавычки («). Внутри этого удвойте все существующие двойные кавычки ( .Replace("""", """""") )

У вас должен быть шаблон, "," разделяющий поля, с открывающей и закрывающей кавычками.

Это сохранит существующие разрывы строк при переносе в Excel. Если вам нужны разрывы строк, то вставьте Environment.Новая строка там, где это необходимо.

В формате .csv у вас не так много опций для указания форматирования ячеек.

Ответ №3:

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

Существует множество пакетов с открытым исходным кодом и коммерческих пакетов, которые позволяют создавать Excel напрямую, что, вероятно, позволило бы преодолеть эти проблемы.

Ответ №4:

Чтобы иметь:

 Row 1 Col1 | Row1 Col2
----------- ----------
Row 2 Col1 | Row2
           | Col2 (different line)
  

Минимальный CSV-файл равен:

 Row1 Col1,Row1 Col2
Row2 Col1,"Row2
Col2 (different line)"
  

" помечает его как блок, внутри которого новые строки и запятые являются не частью разметки CSV, а фактическим содержимым. Вам также нужно делать это везде, где вы используете «, а также избегать его путем удвоения. So

 This cell says "hello" to you
  

экранируется как

 "This cell says ""hello"" to you"
  

Самый простой способ сделать это на практике — игнорировать тот факт, что вам не всегда нужно это делать, и просто делать это каждый раз:

 public static string CSVEscape(string content)
{
  return """   content.Replace(""", """")   """;
}