#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(""", """") """;
}