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


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

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

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

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

ТИА,
-Джей

EDIT:
Вот быстрый файл, который я написал вручную, чтобы дублировать проблему.

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

когда я импортирую это в Excel 2007, я получаю строку заголовка и две записи. Обратите внимание, что запятая в "Smith, Joe" обрабатывается правильно. Это просто разрывы линий, которые вызывают проблемы.

надеюсь, что это поможет.

19 89

19 ответов:

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

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

ни одно из предложенных решений работал для меня.

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

копировать / вставлять данные из csv-файла (открыть в Редакторе), затем выполнить "текст в Столбцах" --> не работает, все в порядке.

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

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

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

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

Если вы делаете это вручную, загрузите 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, похоже, избегает этого символа и предпочитает точку с запятой вместо. У меня есть доступ к другому компьютеру, настроенному на английский язык Великобритании, и на этом компьютере первый пример с разделителем запятой отлично работает (только на doubleclick), а тот, у которого есть точка с запятой, фактически терпит неудачу! Так много для взаимодействия. Если вы хотите опубликовать этот CSV в интернете, и пользователи могут иметь Excel, я думаю, вам нужно опубликовать обе версии и предложить людям проверить, какой файл дает правильное количество строк.

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

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

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

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

разбито:
Имя,Название, Описание
"Джон", "Мистер", "мое подробное описание"

работает:
Имя,Название, Описание
"Джон","Мистер", "мое подробное описание"

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

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

Ответ

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

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

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

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

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

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

например. "Тест", " многострочный элемент\n многострочный элемент " \r\n "Test2", " многострочный элемент\n многострочный элемент " \r\n

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

вставить в блокнот++, выберите кодирование > кодировать в ANSI, скопируйте все снова и вставьте в Excel:)

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

1) Установите LibreOffice 2) Откройте Calc и импортируйте файл 3) Мой txt-файл имел поля, разделенные, и символьные поля, заключенные в " 4) сохранить как файл ODS 5) Откройте ODS файл в Excel 6) Сохранить как .xls(x) 7) сделано. 8) это прекрасно работало для меня и спасло меня BIGTIME!

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

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

У меня была похожая проблема. У меня были некоторые данные twitter в 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 не забудьте проверить Excended (\n,\r,\t... Флажок [посмотрите на левое дно диалогового окна)

Что только что работало для меня, импорт в Excel напрямую при условии, что импорт выполняется в текстовом формате, а не в формате csv. М/

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

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

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

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

сведения= '"первой строке в ячейке A1\Р 2 строки в ячейке A1\р 3-й строке в ячейке A1","ячейка В1","1-й линии в ячейке С1\Р 2 строки в ячейке С1"\N"в первой строке в ячейке A2"\п'

.запись (данные)

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

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

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

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

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

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

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

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

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