Импорт CSV с разрывами строк в Excel 2007

Я работаю над функцией экспорта результатов поиска в файл CSV, который будет открыт в Excel. Одно из полей - это поле с произвольным текстом, которое может содержать разрывы строк, запятые, цитаты и т. Д. Чтобы противодействовать этому, я заключил поле в двойные кавычки (").

Однако, когда я импортирую данные в Excel 2007, устанавливаю соответствующий разделитель и устанавливаю квалификатор текста на двойные кавычки, разрывы строк по-прежнему создают новые записи в разрывах строк, где я ожидал бы увидеть все текстовое поле в одиночная ячейка.

Я также попытался заменить CR / LF (\ r \ n) только на CR (\ r) и снова только на LF (\ n), но не повезло.

Кто-нибудь еще сталкивался с таким поведением, и если да, то как вы его исправили?

TIA,
-J

РЕДАКТИРОВАТЬ:
Вот небольшой файл, который я написал вручную, чтобы воспроизвести проблему.

ID, имя, описание
«12345», «Смит, Джо», «Привет.
Меня зовут Джо».

Когда я импортирую это в Excel 2007, я получаю строку заголовка и две записи. Обратите внимание, что запятая в «Смит, Джо» обрабатывается правильно. Проблемы возникают только из-за разрывов строк.


person jeremyalan    schedule 19.04.2010    source источник
comment
Я просмотрел файл CSV в Notepad ++, и все оказалось правильно. У меня есть другие поля с запятыми, и они правильно импортируются. Проблемы возникают только из-за разрывов строк.   -  person jeremyalan    schedule 19.04.2010
comment
У меня проблемы с CSV-файлами UTF8 с многострочными данными и Excel. В итоге я просто загрузил файл в Google Docs, открыл его в листе Google, а затем загрузил как файл .xls. Мне этот способ подходит.   -  person creuzerm    schedule 01.05.2015


Ответы (23)


Excel (по крайней мере, в Office 2007 на XP) может вести себя по-разному в зависимости от того, импортируется ли CSV-файл, открыв его из меню «Файл-> Открыть» или дважды щелкнув файл в проводнике.

У меня есть файл CSV, который находится в кодировке UTF-8 и содержит символы новой строки в некоторых ячейках. Если я открою этот файл из меню Excel File-> Open, появится мастер «импорта CSV», и файл не может быть правильно импортирован: новые строки начинают новую строку даже в кавычках. Если я открою этот файл двойным щелчком по нему в окне проводника, он откроется правильно без вмешательства мастера.

person J Ashley    schedule 20.03.2014
comment
Есть идеи, как получить те же настройки, что и при двойном щелчке? - person Michiel Thalen; 09.04.2015
comment
Это правда! Как странно. - person David; 19.05.2015
comment
Если вы используете немецкие региональные настройки, вам нужно использовать точку с запятой (;) вместо запятой (,) в вашем CSV, чтобы двойной щелчок работал ... - person user1859022; 20.05.2015
comment
Это мой опыт работы с Excel 2016. Еще не понял, как получить поведение Open при импорте. Кому-нибудь повезло? - person Breck; 24.09.2015
comment
у меня это не сработало. В качестве разделителя он открывает все в одном столбце двойным щелчком. С участием ; в качестве разделителя он был импортирован правильно, за исключением многострочных текстовых полей, которые были импортированы как несколько записей. У меня Excel 2010 - person Andrej Adamenko; 17.06.2016
comment
@ user1859022 Я удваиваю это значение для венгерского языка. на самом деле любая локаль, которая использует запятую в качестве десятичного разделителя, должна использовать точку с запятой в качестве разделителя полей для правильной работы открытого двойного щелчка csv - person robotik; 28.07.2016
comment
он открывается для меня двойным щелчком, но символы юникода перепутаны. Я хочу использовать импорт, потому что я могу установить кодовую страницу на первом этапе. - person robotik; 28.07.2016
comment
Метод двойного щелчка подтвержден здесь в Excel 2013. В моем случае мне нужно преобразовать UTF-8 в Windows-1250, чтобы правильно отображать диакритические знаки. Окончания строк CRLF (Win) и LF (Lin) работают. CR (Mac) - нет. - person Hrobky; 25.10.2017

Ни одно из предложенных решений не помогло мне.

Что реально работает (с любой кодировкой):

Скопируйте / вставьте данные из csv-файла (открытого в текстовом редакторе), затем перенесите текст в столбцы - ›данные преобразуются некорректно.

Следующий шаг - перейти к ближайшему пустому столбцу или пустому листу и снова скопировать / вставить (то же самое, что у вас уже есть в буфере обмена) - ›теперь работает автоматически.

person sdplus    schedule 17.09.2013
comment
В моем случае это сработало: он правильно свернул CSV на отдельные записи, но удалил все данные в поле после новой строки. - person Lilienthal; 26.05.2014
comment
Это сработало, есть идеи, почему это не работает при импорте csv из Excel? - person Rafael Sisto; 08.04.2015
comment
Я могу подтвердить, что это работает, вы даже можете вставлять больше данных на разные листы, не повторяя команду текста в столбцы. Это полезно, если вам нужно импортировать несколько файлов. - person Alex; 25.02.2016
comment
Почему это работает, но ни открытие CSV, ни добавление его как текстовых данных со всеми надлежащими настройками не работают? Спасибо за совет. Команда копирования / вставки должна поговорить с командой импорта данных! - person alexGIS; 07.10.2016
comment
Я не верил, что это может сработать, но это действительно так! Excel 2016. Как упоминалось в @Lilienthal, он удаляет все данные в многострочном столбце за первой строкой, поэтому, если вам это действительно нужно, это может быть не лучший метод. Остальные столбцы сохраняются правильно. - person Spc_555; 16.03.2017
comment
@VasilyAlexeev и Лилиенталь Вы уверены? У меня это сработало с многострочным контентом, но не увеличило высоту строки. Так что это выглядело как одна строка, пока я не заглянул в поле формулы или не расширил строку. - person Jacktose; 24.05.2017
comment
Когда вы переходите на новую вкладку для вставки, помните, что форматирование столбца не будет сохранено. Поэтому, если в ваших данных есть номера телефонов, вы можете отформатировать правильные столбцы как текст, дату и т. Д. Перед повторной вставкой данных. В остальном это единственное работающее решение на этой странице (октябрь 2017 г.) - person WimVO; 24.10.2017
comment
Ебена мать. это действительно работает. и понятно почему. При преобразовании текста в столбцы Excel запоминает настройки и автоматически преобразуется. Если у вас есть текст, уже разделенный на строки, он будет выглядеть строка за строкой и игнорировать новые строки. Я думаю, что MS должна включить флажок, чтобы сохранить поведение или повторно сканировать данные. Мне все равно, ... если чертовски работает - person user853710; 24.04.2018
comment
Невероятный. Собственно работает. Microsoft Office для дома и учебы 2013. Я прочитал это и подумал, что да ... но какой вред от попытки? Фан-чертовски-вкусно! - person Luke; 21.12.2018
comment
ТОЛЬКО работал у меня после выполнения | ТРУБЫ через разделитель, а не через запятую. Не знаю почему. но это работало с трубкой и двойными кавычками, независимо от кодировки (UTF-8, ANSI). И независимо от окончаний строк (все CR / r или все NL / n) НЕ работал с одинарными кавычками. - person m1m1k; 07.06.2021
comment
Также работает с разделителем с запятой. - person Luke; 23.07.2021

Если вы делаете это вручную, загрузите LibreOffice и используйте LibreOffice Calc для импорта CSV-файла. Он намного лучше справляется с подобными вещами, чем любая версия Excel, которую я пробовал, и может сохранять в XLS или XLSX по мере необходимости, если вам впоследствии понадобится перейти в Excel.

Но если вы застряли в Excel и нуждаетесь в исправлении получше, похоже, есть способ. Кажется, это зависит от локали (что, по моему скромному мнению, кажется идиотским). У меня нет Excel 2007, но есть Excel 2010 и приведенный пример:

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

не работает. Я написал его в Блокноте и выбрал «Сохранить как ...», а рядом с кнопкой «Сохранить» можно выбрать кодировку. Я выбрал UTF-8, как было предложено, но безуспешно. Однако замена запятых на точку с запятой у меня сработала. Больше я ничего не менял, и это просто сработало. Поэтому я изменил пример, чтобы он выглядел так, и выбрал кодировку UTF-8 при сохранении в Блокноте:

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

Но есть загвоздка! Единственный способ, которым это работает, - это дважды щелкнуть файл CSV, чтобы открыть его в Excel. Если я попытаюсь импортировать данные из текста и выберу этот CSV, он все равно не удастся найти новые строки в кавычках.

Но есть еще одна загвоздка! Разделитель рабочего поля (запятая в исходном примере, точка с запятой в моем случае), похоже, зависит от региональных настроек системы (задается в Панели управления -> Регион и язык). В Норвегии десятичным разделителем является запятая. Кажется, что Excel избегает этого символа и предпочитает точку с запятой. У меня есть доступ к другому компьютеру, настроенному на британский английский язык, и на этом компьютере первый пример с разделителем запятой работает нормально (только при двойном щелчке), а тот, что с точкой с запятой, действительно не работает! Вот и все о совместимости. Если вы хотите опубликовать этот CSV-файл в Интернете, а у пользователей может быть Excel, я думаю, вам нужно опубликовать обе версии и предложить людям проверить, какой файл дает правильное количество строк.

Итак, все детали, которые мне удалось собрать, чтобы заставить это работать:

  1. Файл должен быть сохранен как UTF-8 со спецификацией, что и делает Блокнот, когда вы выбираете UTF-8. Я попробовал UTF-8 без спецификации (можно легко переключить в Notepad ++), но затем дважды щелкнуть документ не удалось.
  2. Вы должны использовать запятую или точку с запятой, но не тот, который является десятичным разделителем в ваших региональных настройках. Возможно, работают другие персонажи, но я не знаю какие.
  3. Вы должны заключить в кавычки поля, содержащие новую строку с символом ".
  4. Я использовал окончания строк Windows (\ r \ n) как в текстовом поле, так и в качестве разделителя записей, это работает.
  5. Вы должны дважды щелкнуть файл, чтобы открыть его, импорт данных из текста не работает.

Надеюсь, это кому-то поможет.

person ketil    schedule 12.03.2015
comment
Кроме того, похоже, что трюк, упомянутый @sdplus, работает! Я думаю, что происходит следующее: когда вы впервые вставляете и выполняете маневр текста по столбцам, вы настраиваете цитирование и разделитель полей в Excel. При второй вставке он использует эту конфигурацию и правильно разбивает данные на столбцы в зависимости от конфигурации. Но это похоже на ручной подход. - person ketil; 12.03.2015
comment
да, каждый раз, когда вы импортируете текст или делаете текст в столбец, вы повторно калибруете то, как копирование / вставка будет работать в данном сеансе. он применяется даже к новым книгам, которые вы создаете, пока вы не закроете Excel. это тоже может расстраивать. как только вы используете заданный разделитель для импорта, он разделит ваш текст этим, даже если вы просто хотите вставить предложение в ячейку. вам нужно повторить импорт с табуляцией в качестве разделителя или перезапустить Excel, чтобы остановить его. - person robotik; 28.07.2016
comment
Кажется, твой трюк действительно работает. Но похоже, что точка с запятой не имеет никакого отношения к решению. Проблема в том, что Excel обрабатывает файлы CSV по-разному, в зависимости от региональных настроек. Я из Германии, и для меня файлы CSV из Excel всегда имеют точку с запятой вместо запятой (причина этого в том, что в Германии десятичный разделитель - запятая вместо точки). Реальное решение, похоже, заключается в том, что Excel загружает файлы CSV совершенно иначе, чем все другие текстовые файлы. Таким образом, CSV-файлы, содержащие разрывы строк между цитатами, похоже, работают. Все остальные текстовые файлы - нет. - person Martini Bianco; 06.01.2017
comment
@Martini, да, у меня есть норвежский Excel, и мы также используем запятую в качестве десятичного разделителя, поэтому я упомянул, как это зависит от региональных настроек (хотя я назвал это локалью). Возможно, мне стоит перефразировать для ясности. - person ketil; 07.01.2017
comment
Это ответ для всех людей в регионах, где запятая является десятичным разделителем. Обратите внимание, что для этих регионов Excel также использует точку с запятой в качестве разделителя аргументов формулы (=FOO(1;2) вместо =FOO(1,2)), но очевидно, что Excel неправильно применяет это к синтаксическому анализатору формата файла (какая другая программа анализирует стандартный формат файла в зависимости от языкового стандарта? ??) - person leemes; 25.08.2017
comment
Проблема с двойным щелчком заключается в том, что Excel не получает правильную кодировку. Мастер импорта позволяет выбрать кодировку вручную. - person user5365075; 16.07.2018
comment
@ user5365075 О какой версии Excel вы имеете в виду? Я не уверен, что в Excel 2007 есть мастер импорта, который мог бы это сделать? - person ketil; 17.07.2018
comment
@ketil У меня есть Excel 2017. Я знаю, что это немного не по теме, но поиск Excel в целом перенаправляет на эту ветку, поэтому я хотел бы прокомментировать, чтобы предупредить пользователя о более поздних версиях. Обратите внимание, что проблема аналогична Excel 2017. - person user5365075; 17.07.2018
comment
Бинго с подсказкой спецификации! Теперь это сработало для меня (UTF-8 с спецификацией, двойной щелчок, точка с запятой в качестве разделителя). Вы можете добавить спецификацию в VIM с помощью set :bomb, кстати. - person Matt; 06.10.2018
comment
Вопрос касается Excel, а не LibreOffice. - person Zimba; 02.10.2019

Я наконец нашел проблему!

Оказывается, мы писали файл в кодировке Unicode, а не в ASCII или UTF-8. Изменение кодировки FileStream, похоже, решает проблему.

Спасибо всем за все ваши предложения!

person jeremyalan    schedule 21.06.2010
comment
Кодировка ASCII, похоже, не решила для меня проблему (хотя в MacOS), и у меня нет ведущего пробела, и мое поле цитируется. Тот же самый документ отлично импортируется в Документы Google. Какое разочарование. Кстати, текстового файла в кодировке Unicode не существует. Это должна быть одна из реализаций Unicode (UTF-8, UTF-16, UTF-32 и т. Д.). - person Ben; 22.03.2012
comment
Спасибо за решение. Мне все еще было любопытно, каков ответ, поэтому я попытался создать CSV с разрывом строки в Excel и посмотреть, что он сохранил. Оказывается, Excel использует только перевод строки для новой строки в ячейке. Если я попытаюсь создать такой же CSV в Блокноте, он будет использовать перевод строки + возврат каретки для разрыва строки. Поэтому для разрывов строки в одной ячейке убедитесь, что используется только перевод строки (LF или \ n), а не возврат каретки (CR или \ r). Excel использует и то, и другое для завершения строки. - person xr280xr; 31.05.2012
comment
Кодировка ASCII для меня тоже не решила проблему - Excel 2000, Windows 7. - person ChrisJJ; 01.05.2013
comment
Для OS X на Macintosh сохраните как Windows, разделенные запятыми (csv). Это добавляет новые строки вместо разрывов строк. Он будет указан в раскрывающемся меню для форматов в разделе «Специальные форматы». - person taco; 17.02.2014
comment
Какую кодировку Unicode следует использовать (UTF-8, UTF-16)? - person Andrej Adamenko; 17.06.2016
comment
Старайтесь всегда использовать UTF-8, UTF-16 разрабатывается для двухбайтовых символов, а они очень редко встречаются почти во всех языках. - person htm11h; 21.09.2016

Используйте Google Таблицы и импортируйте файл CSV.

Затем вы можете экспортировать это для использования в Excel.

person Mazzy    schedule 31.03.2019
comment
Хороший совет! Это наиболее удобный метод конвертации, если вы согласны с загрузкой CSV-файла в сторонний сервис (т.е. неконфиденциальные данные). Обратите внимание, что вам, возможно, придется вручную установить разделитель при импорте. И вам может потребоваться настроить размер ячейки в итоговом файле Excel, чтобы он отображался правильно. - person m000; 04.11.2019
comment
Также работает с Excel в Office 365 в браузере. Мне не удалось правильно открыть CSV с разрывами строк внутри ячеек с помощью настольного приложения Excel (попробовав большинство предложений с этой страницы), но Excel на office.com смог правильно открыть его. - person georg w.; 23.07.2020

Короткий ответ

Удалите символы новой строки / перевода строки (\n в Notepad ++). Excel по-прежнему распознает символ возврата каретки (\r) для разделения записей.

Длинный ответ

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

Что сработало для меня, так это удаление всех символов новой строки (\n). Это приводит к сворачиванию полей в одну запись при условии, что ваши записи разделены комбинацией возврата каретки и новой строки (CR / LF). Затем Excel правильно импортирует файл и распознает новые записи по возврату каретки.

Очевидно, более чистым решением будет сначала заменить настоящие символы новой строки (\r\n) на временную комбинацию символов, заменив символы новой строки (\n) на выбранный вами разделительный символ (например, запятую в файле с точкой с запятой), а затем снова заменить временные символы правильными символами новой строки. .

person Lilienthal    schedule 25.05.2014
comment
У меня была противоположная ситуация: \n между строками и \r\n внутри значений. Только что убрал последний в Notepad ++. - person Rarst; 15.05.2015
comment
Я пробовал оба, и ни один из них не работал с Office pro plus 2013 - person m1m1k; 07.06.2021

Если поле содержит пробел в начале, Excel игнорирует двойные кавычки как квалификатор текста. Решение состоит в том, чтобы исключить ведущие пробелы между запятой (разделителем полей) и двойными кавычками. Например:

Сломано:
Имя, Заголовок, Описание
«Джон», «Мистер», «Мое подробное описание»

Работа:
Имя, Заголовок, Описание
"Джон", "Мистер", "Мое подробное описание"

person Jeremy    schedule 23.04.2010
comment
Я согласен, однако в моем выводе нет начальных пробелов. Любые идеи? - person jeremyalan; 29.04.2010
comment
нам нужна линия разорванная :( - person Luke; 16.11.2016

+1 к комментарию Дж. Эшли. Я тоже столкнулся с этой проблемой. Оказывается, Excel требует:

  • Символ новой строки (\ n) в строке в кавычках

  • Возврат каретки и перевод строки между каждой строкой.

Например,

"Test", "Multiline item\n
multiline item"\r\n
"Test2", "Multiline item\n
multiline item"\r\n

Я использовал блокнот ++, чтобы правильно разграничить каждую строку и использовать только новые строки в строке. Обнаружил это, создав многострочные записи в пустом документе Excel и открыв csv в блокноте ++.

person Iventio    schedule 10.09.2015
comment
он работал у меня только с символом новой строки как многострочным элементом и разделителем строк, как только я установил разделитель полей в соответствии с моей локалью - person robotik; 28.07.2016
comment
примечание: это не сработало в Office Pro Plus 2013, я подозреваю, что разные версии по-разному обрабатывали это - person m1m1k; 07.06.2021

Если кто-то наткнулся на эту ветку и ищет окончательный ответ, здесь идет (благодарность человеку, упоминающему LibreOffice:

1) Установите LibreOffice 2) Откройте Calc и импортируйте файл 3) В моем txt-файле поля были разделены, а поля символов заключены в «4) сохранить как файл ODS 5) Открыть файл ODS в Excel 6) Сохранить как .xls (x) 7) Готово.8) Это отлично сработало для меня и сэкономило БОЛЬШОЕ ВРЕМЯ!

person Rock Rico    schedule 03.12.2015
comment
нет необходимости сохранять как ODS, LibreOffice может сохранять xls (x) изначально - person robotik; 28.07.2016

Вставьте в Notepad ++, выберите «Кодирование»> «Кодировать в ANSI», скопируйте все заново и вставьте в Excel :)

person Aaron Dake    schedule 19.06.2015

У меня была похожая проблема. У меня были данные твиттера в MySQL. Данные имели перевод строки (LF или \ n) с данными. У меня было требование экспортировать данные MySQL в Excel. LF испортил мой импорт файла csv. Итак, я сделал следующее -

1. From MySQL exported to CSV with Record separator as CRLF
2. Opened the data in notepad++ 
3. Replaced CRLF (\r\n) with some string I am not expecting in the Data. I used ###~###! as replacement of CRLF
4. Replaced LF (\n) with Space
5. Replaced ###~###! with \r\n, so my record separator are back.
6. Saved and then imported into Excel

ПРИМЕЧАНИЕ. При замене CRLF или LF не забудьте проверить превышение (\ n, \ r, \ t ... Checkbox [посмотрите на левую нижнюю часть диалогового окна)

person Dibs    schedule 26.04.2017

Мой опыт работы с Excel 2010 на WinXP с французскими региональными настройками

  • разделитель вашего импортированного csv должен соответствовать разделителю списка ваших региональных настроек (; в моем случае)
  • вы должны дважды щелкнуть файл в проводнике. не открывайте его из Excel
person pingouinshark    schedule 04.11.2015

Обзор

Спустя почти 10 лет после первоначальной публикации Excel не улучшил импорт файлов CSV. Однако я обнаружил, что он намного лучше импортирует таблицы HTML. Итак, можно использовать Python для преобразования CSV в HTML, а затем импортировать полученный HTML в Excel.

Преимущества этого подхода: (а) он работает надежно, (б) вам не нужно отправлять свои данные в стороннюю службу (например, таблицы Google), (в) не требуется дополнительных «толстых» установок (LibreOffice, Числа и т. Д.) Для большинства пользователей, (d) более высокий уровень, чем вмешательство с символами CR / LF и маркерами спецификации, (e) нет необходимости возиться с настройками локали.

Шаги

Следующие шаги можно выполнить в любой оболочке, подобной bash, если установлен Python 3. Хотя Python можно использовать для прямого чтения CSV, csvkit используется для промежуточного преобразования в JSON. Это позволяет нам избежать тонкостей CSV в нашем коде Python.

Сначала сохраните следующий сценарий как json2html.py. Скрипт считывает файл JSON со стандартного ввода и выгружает его в виде таблицы HTML:

#!/usr/bin/env python3
import sys, json, html

if __name__ == '__main__':
    header_emitted = False
    make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
    make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
    make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
    print("<html><body>\n<table>")
    for line in json.load(sys.stdin):
        lk, lv = zip(*line.items())
        if not header_emitted:
            print(make_tr(lk, make_th))
            header_emitted = True
        print(make_tr(lv, make_td))
    print("</table\n</body></html>")

Затем установите csvkit в виртуальной среде и используйте csvjson для передачи входного файла в наш сценарий. Рекомендуется отключить определение типа ячейки с помощью аргумента -I:

$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html

Теперь output.html можно импортировать в Excel. Разрывы строк в ячейках будут сохранены.

При желании вы можете очистить виртуальную среду Python:

$ deactivate
$ rm -rf pyenv
person m000    schedule 04.11.2019

Excel невероятно ломается при работе с CSV. LibreOffice работает намного лучше. Итак, я узнал, что:

  • Файл должен быть закодирован в UTF-8 с спецификацией, поэтому учтите это для всех пунктов ниже.
  • Наилучший результат, безусловно, достигается при открытии его из проводника.
  • If you open it from within Excel there are two possible outcomes:
    • If it has only ASCII characters, it will most likely work
    • Если в нем есть символы, отличные от ASCII, это испортит ваши разрывы строк
  • Кажется, это сильно зависит от десятичного разделителя, настроенного в региональных настройках ОС, поэтому вам нужно выбрать правильный
  • Могу поспорить, что он также может вести себя по-разному в зависимости от ОС и версии Office.
person undefined    schedule 18.01.2019
comment
Вы утверждаете, что LibreOffice лучше угадывает, чем Excel, верно? Excel задает все правильные вопросы при импорте текстовых файлов, если вы не дадите ему угадать. - person Tom Blodget; 19.01.2019
comment
Благодарю вас! Это помогает мне преобразовать мой CSV из UTF-8 без спецификации в UTF-8 с спецификацией (просто UTF-8 в меню) с помощью Notepad ++. Затем я просто открыл его из проводника, и Excel показал его правильным образом с правильными символами и правильными разрывами строк внутри ячеек. Когда я открыл его в UTF-8 по умолчанию без кодировки BOM из Explorer, импортированные разрывы строк в Excel были правильно, но неправильно отображали нелатинские символы. Если бы я открыл его из Excel, он показал правильную кодировку, но не справился с переносами строк. - person Sergey Beloglazov; 15.05.2020

Это для Excel 2016:

Просто была такая же проблема с разрывами строк внутри файла csv с мастером Excel.

Впоследствии я пробовал это с помощью функции «Новый запрос»: Данные -> Новый запрос -> Из файла -> Из CSV -> Выбрать файл -> Импорт -> Загрузить

Он работал отлично, и это было очень быстрое решение для всех вас, у которых есть одна и та же проблема.

person SaSH_17    schedule 12.02.2020

То, что у меня сработало, - импорт в Excel напрямую при условии, что импорт выполняется в текстовом формате, а не в формате csv. M /

person Martin    schedule 21.08.2016

просто создайте новый лист с ячейками с переносом строки, сохраните его в csv, затем откройте его с помощью редактора, который может отображать символы конца строки (например, блокнот ++). Сделав это, вы заметите, что разрыв строки в ячейке кодируется с помощью LF, а «настоящий» конец строки - это код с CR LF. Вуаля, теперь вы знаете, как сгенерировать «правильный» CSV-файл для Excel.

person depassage    schedule 14.02.2017

У меня также была эта проблема: например, файлы csv (строки с разделителями-запятыми, разделенные двойными кавычками строки) с LF в строках в кавычках. Это были загруженные файлы Square. Я сделал импорт данных, но вместо импорта в виде текстовых файлов, импортированных как «из HTML». На этот раз он проигнорировал LF в строках в кавычках.

person user3861859    schedule 02.05.2017

Это работало на Mac, используя csv и открывая файл в Excel.

Использование python для записи файла csv.

data = '"первая строка ячейки a1 \ r 2-я строка в ячейке a1 \ r 3-я строка в ячейке a1", "ячейка b1", "1-я строка в ячейке c1 \ r 2-я строка в ячейке c1" \ n "первая строка в ячейка a2 "\ n '

file.write (данные)

person 2003G35    schedule 07.07.2017

В MacOS попробуйте использовать Numbers

Если у вас есть доступ к Mac OS, я обнаружил, что электронная таблица Apple Числа отлично справляется с выделением сложного многострочного файла CSV, который Excel не может обработать. Просто откройте .csv с числами и затем экспортируйте в Excel.

person Tim    schedule 13.05.2018

В моем случае открытие CSV в блокноте ++ и добавление SEP="," в качестве первой строки позволяет мне без проблем открывать CSV с разрывами строк и utf-8 в Excel.

person adax2000    schedule 14.08.2018

Замените разделитель на TAB (\ t) вместо запятой (,). Затем откройте файл в редакторе (Блокноте и т. Д.), Скопируйте содержимое оттуда и вставьте его в файл Excel.

person Ionut    schedule 06.09.2018
comment
Попробуйте это на больших файлах :) - person chukko; 29.10.2018

Разрывы строк внутри двойных кавычек вполне подходят в соответствии со стандартом CSV. Анализ разрывов строк в Excel зависит от настройки разделителя списка в ОС:

  1. Windows: вам необходимо установить разделитель списков на запятую (Регион и язык »Форматы» Дополнительно) Источник: https://superuser.com/questions/238944/how-to-force-excel-to-open-csv-files-with-data-set-in-columns#answer-633302

  2. Mac: необходимо изменить регион на США (затем вручную изменить другие настройки по своему усмотрению) Источник: https://answers.microsoft.com/en-us/mac/forum/macoffice2016-macexcel/разделительстрок-запятая-точкасзапятой-в-excel-2016-for/7db1b1a0-0300-44ba-ab9b-35d1c40159c6 (см. ответ Ньюманли)

Не забудьте полностью закрыть Excel перед повторной попыткой.

Я успешно воспроизвел проблему и смог исправить ее, используя описанное выше как в Max, так и в Windows.

person David Avikasis    schedule 04.10.2018
comment
Я не думаю, что это работает. Я экспортировал CSV с разрывами строк в ячейках из самого Excel. Поскольку языковой стандарт не изменился, Excel должен был правильно его загрузить. Но не может. Он по-прежнему мешает переносу строк в ячейках. - person m000; 04.11.2019