Создание файла CSV для Excel, как получить новую строку внутри значения - PullRequest
145 голосов
/ 07 августа 2009

Мне нужно создать файл для Excel, некоторые значения в этом файле содержат несколько строк.

там также есть текст не на английском языке, поэтому файл должен быть Unicode.

Файл, который я генерирую, теперь выглядит следующим образом: (в UTF8, с неанглийским текстом и большим количеством строк)

Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"

Обратите внимание, что многострочное значение заключено в двойные кавычки с обычным ежедневным переводом строки.

Согласно тому, что я обнаружил в Интернете, это должно работать, но это не так, по крайней мере, не в файлах Excel 2007 и UTF8, Excel обрабатывает 3-ю строку как вторую строку данных, а не как вторую строку первая строка данных.

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

Спасибо

РЕДАКТИРОВАТЬ: я «решил» мою проблему, имея два варианта CSV, один для Excel (Unicode, табуляция разделена, без новых строк в полях) и один для остального мира (UTF8, стандартный CSV).

Не то, что я искал, но, по крайней мере, это работает (пока)

Ответы [ 18 ]

1 голос
/ 09 декабря 2011

Файлы UTF, содержащие спецификацию, заставят Excel обрабатывать новые строки буквально даже в этом поле, заключенном в кавычки. (Проверено Excel 2008 Mac)

Решение состоит в том, чтобы сделать любые новые строки переводом каретки (CHR 13), а не переводом строки.

0 голосов
/ 20 апреля 2019

Для Открытие файла , синтаксис

 ,"one\n
 two",...

Критическим моментом является то, что нет пробела после первого ",". Обычно пробелы в порядке, и обрезаются, если строка не в кавычках. Но в остальном противный. Мне понадобилось время, чтобы понять это.

Кажется, не имеет значения, заканчивается ли строка \ n или \ c \ n.

Убедитесь, что вы развернули панель формул, чтобы вы могли видеть текст в ячейке (меня достали после долгого дня ...)

Теперь, конечно, File Open не будет должным образом поддерживать UTF-8 (если не использовать трюки).

Excel> Данные> Получение внешних данных > Из текста

Может быть установлен в режим UTF-8 (это далеко вниз по списку шрифтов). Однако в этом случае новые строки не работают, и я не знаю, как это исправить.

(Можно подумать, что через 30 лет М.С. все исправит).

0 голосов
/ 07 февраля 2018

Вы можете использовать сочетание клавиш ALT + Enter.

  1. Выберите ячейку, которую вы хотите редактировать
  2. войти в режим редактирования, дважды щелкнув по нему или нажав F2 3. Нажмите Alt + Enter. Это создаст новую строку в ячейке
0 голосов
/ 14 мая 2015

Обычно новой строкой является "\ r \ n". В моем CSV я заменил «\ r» на пустое значение. Вот код в Javascript:

cellValue = cellValue.replace(/\r/g, "")

Когда я открывал CSV в MS Excel, он работал хорошо. Если значение имеет несколько строк, оно останется в одной ячейке на листе Excel.

0 голосов
/ 06 октября 2009

То, как мы это делаем (мы используем VB.Net), заключается в том, чтобы заключить текст с новыми строками в Chr (34), который является символом, представляющим двойные кавычки, и заменить все символы CR-LF для LF.

0 голосов
/ 06 декабря 2013

вы можете сделать следующее "\"Value3 Line1 Value3 Line2\"". У меня работает генерация CSV-файла в Java

0 голосов
/ 25 октября 2013

Печать новой строки HTML <br/> в контент и открытие в Excel будет работать нормально на любом Excel

0 голосов
/ 02 июня 2013

Вот интересный подход с использованием JavaScript ...

  String.prototype.csv = String.prototype.split.partial(/,\s*/);  

  var results = ("Mugan, Jin, Fuu").csv();                        

  console.log(results[0]=="Mugan" &&                                   
         results[1]=="Jin" &&                                     
         results[2]=="Fuu",                                       
         "The text values were split properly");                  
...