Мне нужно создать файл для Excel, некоторые значения в этом файле содержат несколько строк.
там также есть текст не на английском языке, поэтому файл должен быть Unicode.
Файл, который я генерирую, теперь выглядит следующим образом: (в UTF8 с неанглийским текстом, смешанным с большим количеством строк)
Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"
Обратите внимание, что многострочное значение заключено в двойные кавычки с обычным ежедневным переводом строки.
В соответствии с тем, что я обнаружил в Интернете, это должно работать, но это не так, по крайней мере, не в файлах Excel 2007 и UTF8, Excel обрабатывает третью строку как вторую строку данных, а не как вторую строку первой строки данных ,
Это должно выполняться на компьютерах моих клиентов, и я не могу контролировать их версию Excel, поэтому мне нужно решение, которое будет работать с Excel 2000 и более поздними версиями.
Спасибо
РЕДАКТИРОВАТЬ: я "решил" мою проблему, имея два варианта CSV, один для Excel (Unicode, табуляция разделена, без новых строк в полях) и один для остального мира (UTF8, стандартный CSV).
Не то, что я искал, но, по крайней мере, это работает (пока)
Ответы:
Вы должны иметь пробелы в начале полей ТОЛЬКО там, где пробелы являются частью данных. Excel не будет убирать пробелы. Вы получите ненужные места в заголовках и полях данных. Хуже того, то,
"
что должно «защищать» этот разрыв строки в третьем столбце, будет игнорироваться, поскольку оно не находится в начале поля.Если в файле есть не-ASCII символы (закодированные в UTF-8), в
hex EF BB BF
начале файла должна быть спецификация UTF-8 (3 байта ). В противном случае Excel будет интерпретировать данные в соответствии с кодировкой по умолчанию для вашей локали (например, cp1252) вместо utf-8, и ваши символы, не входящие в ASCII, будут уничтожены.Следующие комментарии относятся к Excel 2003, 2007 и 2013; не тестировался на Excel 2000
Если вы откроете файл, дважды щелкнув его имя в проводнике Windows, все будет в порядке.
Если вы откроете его из Excel, результаты могут отличаться:
Варианты включают в себя:
источник
EFBBBF
заголовок, используется0A
как разделитель строк и0D0A
как новая строка внутри строк в текстовых ячейках.После многих настроек, вот конфигурация, которая работает для генерации файлов в Linux, для чтения в Windows + Excel, хотя встроенный формат новой строки не соответствует стандарту :
В Perl я использовал Text :: CSV, чтобы сделать это следующим образом:
источник
\n
. СпасибоНедавно у меня была похожая проблема, я решил ее, импортировав файл HTML , базовый пример будет выглядеть так:
Я знаю, что это не CSV, и может работать по-разному для разных версий Excel, но я думаю, что стоит попробовать.
Надеюсь, это поможет ;-)
источник
Стоит отметить, что если в файле .CSV имеются поля, заключенные в двойные кавычки, содержащие разрывы строк, Excel не будет правильно импортировать файл .CSV, если файл .CSV записан в формате UTF-8. Excel обрабатывает разрыв строки, как если бы это был CR / LF, и начинает новую строку. Таблица искажена. Это кажется верным, даже если точки с запятой используются в качестве разделителей полей (вместо запятых).
Проблема может быть решена с помощью Windows Notepad для редактирования файла .CSV, с помощью File> Save As ... для сохранения файла и перед сохранением файла, изменив кодировку файла с UTF-8 на ANSI. После сохранения файла в формате ANSI я обнаружил, что Microsoft Excel 2013, работающий в Windows 7 Professional, правильно импортирует файл.
источник
Новая строка внутри значения работает, если вы используете точку с запятой в качестве разделителя вместо запятой или табуляции и используете кавычки.
Это работает для меня как в Excel 2010, так и в Excel 2000. Однако, что удивительно, это работает только тогда, когда вы открываете файл как новую электронную таблицу, а не когда вы импортируете его в существующую электронную таблицу с помощью функции импорта данных.
источник
На ПК символ ASCII # 10 - это то, что вы хотите поместить новую строку в значение.
Однако, как только вы загрузите его в Excel, вы должны убедиться, что перенос по словам включен для многострочных ячеек, иначе новая строка будет отображаться в виде квадратной рамки.
источник
Это не будет работать, если вы попытаетесь импортировать файл в EXCEL.
Свяжите расширение файла csv с EXCEL.EXE, чтобы вы могли вызвать EXCEL, дважды щелкнув файл csv.
Здесь я помещаю некоторый текст, за которым следует символ NewLine Char, за которым следует еще один текст И заключая всю строку в двойные кавычки.
Не используйте CR, поскольку EXCEL поместит часть строки в следующую ячейку.
Когда вы вызываете EXCEL, вы увидите это. Возможно, вам придется автоматически определить высоту, чтобы увидеть все это. Где разрывы строк будут зависеть от ширины ячейки.
2
ДАТА
Вот код в Basic
источник
Я нашел это, и это сработало для меня
Тогда куда вам нужно приложить материал
.....
Затем, когда вам нужно что-то записать - например, HTML, который включает в себя «вы можете сделать это
Новые строки заканчиваются
. PHP_EOL
В конце скрипта выводится ссылка, чтобы пользователь мог загрузить файл.
источник
Файлы UTF, содержащие спецификацию, заставят Excel обрабатывать новые строки буквально даже в этом поле, заключенном в кавычки. (Проверено Excel 2008 Mac)
Решение состоит в том, чтобы сделать любые новые строки переводом каретки (CHR 13), а не переводом строки.
источник
Проверьте это: это полностью работает для меня: поместите следующие строки в
xxxx.csv
файлОткрыть с помощью Excel.
в некоторых случаях откроется напрямую, в противном случае потребуется использовать преобразование данных в столбец. увеличьте ширину столбца и нажмите кнопку переноса текста. или отформатируйте ячейки и активируйте текст переноса.
и спасибо за другие предложения, но они не работают для меня. Я нахожусь в чистом окружении окон, и не хотел играть с юникодом или другой забавной вещью.
Таким образом, вы положили формулу из CSV, чтобы преуспеть. Может быть много применений для этого метода работы. (обратите внимание на = перед кавычками)
pd: в ваших предложениях просьба привести несколько примеров данных, а не только код.
источник
«\ r» в конце каждой строки фактически приводило к разрывам строк в Excel, но в .csv оно исчезало и оставляло безобразный беспорядок, где каждая строка была сдвинута против следующей без пробелов и разрывов строк.
источник
То, как мы это делаем (мы используем VB.Net), заключается в том, чтобы заключить текст с новыми строками в Chr (34), который является символом, представляющим двойные кавычки, и заменить все символы CR-LF для LF.
источник
Обычно новая строка "\ r \ n". В моем CSV я заменил «\ r» на пустое значение. Вот код в Javascript:
Когда я открывал CSV в MS Excel, это работало хорошо. Если значение имеет несколько строк, оно останется в одной ячейке на листе Excel.
источник
Только для открытия файла , синтаксис
Критическим является то , что нет никакого места после того , как первый «». Обычно пробелы в порядке и обрезаются, если строка не заключена в кавычки. Но в остальном противно. Мне понадобилось время, чтобы понять это.
Кажется, не имеет значения, заканчивается ли строка \ n или \ c \ n.
Удостоверьтесь, что вы развернули панель формул, чтобы вы могли видеть текст в ячейке (получил меня после долгого дня ...)
Теперь, конечно, File Open не будет должным образом поддерживать UTF-8 (если не использовать трюки).
Excel> Данные> Получить внешние данные > Из текста
Может быть установлен в режим UTF-8 (это далеко вниз список шрифтов). Однако в этом случае новые строки не работают, и я не знаю, как это исправить.
(Можно предположить, что через 30 лет М.С. все исправит.)
источник
В Excel 365 при импорте файла:
Данные -> Из текста / CSV -> Выбрать файл> Преобразовать данные -> Конфигурация источника данных -> Выбрать источник данных -> Нажмите Изменить источник -> В раскрывающемся списке разрыв строки выберите Игнорировать разрывы строк внутри кавычек.
Приведенный выше текст был переведен с португальского языка, поэтому формулировка может быть другой на английском языке.
источник
Вы можете сделать следующее
"\"Value3 Line1 Value3 Line2\""
. У меня работает генерация CSV-файла в Javaисточник
Вот интересный подход с использованием JavaScript ...
источник
Печать HTML новой строки
<br/>
в контенте и открытие в Excel будет работать нормально на любом Excelисточник
Вы можете использовать сочетание клавиш ALT + Enter.
источник