Импорт CSV с разрывы строк в Excel 2007
Я'м работает на возможность экспорта результатов поиска в CSV-файл должен быть открыт в Excel. Одно из полей-это бесплатная текстового поля, которые могут содержать разрывы строк, запятые, цитаты и т. п. Для того, чтобы противодействовать этому, я завернул полей в двойные кавычки (и").
Однако, когда я импортировать данные в Excel 2007, выберите соответствующий разделитель, и установить ограничитель текста в двойные кавычки, переносы строк еще создавать новые записи на разрывы строк, где я ожидал бы увидеть весь текст поля в одной ячейке.
Я've также пробовал заменять ЧР/НЧ (\р\н) с просто CR (\R), и лишь если (\п), но не повезло.
Кто-нибудь сталкивался с таким поведением, и если да, то как ты это исправил?
ТИА,<БР> -Джей
Редактировать:<БР> Здесь'ы краткое файл я писал от руки, чтобы дублировать эту проблему.
идентификатор,имя,описание<БР> наша"12345" и"Ну Смит, Джо и","Эй.<БР> меня зовут Джо.&и"
Когда я импортировать в Excel 2007, я в конечном итоге со строкой заголовка, и две записи. Обратите внимание, что запятая в "Смит, Джо" это обрабатывается должным образом. Это's просто разрывы, которые являются причиной проблемы.
В формате Excel (по крайней мере в Office 2007 на XP) может вести себя по-разному в зависимости от CSV-файл импортируется, открыв его из Файл->открыть меню или двойным щелчком на файле в Проводнике.
У меня есть CSV-файл в кодировке UTF-8 и содержит переводы строк в некоторых клетках. Если я открываю этот файл в Excel's Файл->открыть меню, в "импортировать" и мастер появляется и файл не может быть правильно импортированы: символ новой строки начать новую строку, даже если в кавычках. Если я открываю этот файл, дважды щелкнув на нем в окне Проводника, то он открывает правильно без вмешательства мастера.
Ни одно из предложенных решений работал для меня.
Что на самом деле работает (в любой кодировке):
Для копирования/вставки из CSV-файл (открыть в редактором), затем выполнить "и текст в Столбцах на" --> не работает, все в порядке.
Перейти на следующую вкладку и копировать/вставить снова (то же самое, что у вас есть уже в вашем буфере обмена) --> автомагически работает сейчас.
Если вы делаете это вручную, скачать LibreOffice и использовать LibreOffice Calc, чтобы импортировать CSV. Это делает гораздо лучше такие вещи, чем в любой версии Excel я'вэ пытался, и его можно сохранить в XLS или xlsx как требуется, если вам нужно перевести, чтобы потом в Excel.
Но если вы'вновь застрял в Excel и нужно исправить, там, кажется, способ. Это, кажется, зависит от локали (которая кажется идиотским, по моему скромному мнению). Я Дон'т иметь Excel 2007, но у меня Excel 2010 и приведенный пример:
не'т работу. Я записал это в блокнот и выбрать Сохранить как..., и далее на кнопку Сохранить, вы можете выбрать кодировку. Я выбрал кодировку UTF-8, как полагают, но не повезло. Изменение точки с запятой работал для меня, хотя, запятые. Я не't изменить что-нибудь еще, и он просто работал. Поэтому я изменил пример, чтобы посмотреть, как это, и выбрал кодировку UTF-8 при сохранении в блокноте:
Но там'с уловом! Единственный способ это работает, если вы дважды щелкните CSV-файла, чтобы открыть его в Excel. Если я пытаюсь импортировать данные из текста и выбрал этот CSV, то это еще не о цитируемых строк.
Но там'ы другой лови! Рабочее поле сепаратора (в оригинальном примере запятая, точка с запятой в моем случае), видимо, зависит от системы'региональные параметры S (под панель-и управления и GT; язык и региональные стандарты). В Норвегии, запятая является десятичным разделителем. Excel кажется, чтобы избежать этого персонажа и предпочитать вместо запятой. У меня есть доступ к другому компьютеру установлен в Великобритании английский язык, и на этом компьютере, в первом примере с разделителем запятая работает нормально (только в DoubleClick), и одна с запятой вообще-то не удается! Так для совместимости. Если вы хотите опубликовать этот CSV-Online, и пользователи могут быть в Excel, я думаю, вы должны публиковать обе версии и предполагать, что люди, проверьте, какой файл дает правильное количество строк.
Поэтому все детали, что я'вэ смогли собрать, чтобы получить эту работу являются:
Надеюсь, что это помогает кто-то.
Я, наконец, нашел проблему!
Получается, что мы пишем файл с помощью кодировки Unicode, а не ASCII или UTF-8. Изменение кодировки на файловый поток, кажется, чтобы решить проблему.
Спасибо всем за ваши предложения!
Короткий Ответ
Удалить строки/символы перевода строки (
\п
с Notepad++). Excel будет по-прежнему признают символ возврата каретки (\р
) для разделения записей.Длинный Ответ
Как уже упоминалось символы новой строки поддерживаются внутри поля CSV, но Excel не'т всегда обработаны. Я столкнулся с аналогичной проблемой с третьей стороной CSV, которые, возможно, были проблемы с кодировкой, но ничего't улучшить с кодировкой изменения.
Что работал для меня было удаление всех символов новой строки (
\п
). Это имеет эффект разрушения полей в одну запись, при условии, что ваши записи разделены комбинацией возврата каретки и новой строки (возврата каретки и перевода). Затем Excel правильно импортировать файл и распознавать новые рекорды по возвращении перевозки.Очевидно, чище всего будет сначала заменить настоящий символ новой строки (
\р\н
) с временным характером комбинации, заменяя символы новой строки (\п
) с разделяющей характер (например, запятой, точкой с запятой файл), а затем заменив временное персонажей с правильной строки снова.Если поле содержит пробел, Excel игнорирует двойные кавычки в качестве ограничителя текста. Решение состоит в устранении пробелов между запятой (разделитель полей) и двойные кавычки. Например:
Разбито:<БР> Название,Название,Описание <БР> фильм "Джон" В, С "Г" и, "Мой подробное описание" и<БР>
Работы:<БР> Название,Название,Описание<БР> фильм "Джон" В, С"Г" и,"Мой подробное описание" и<БР>
+1 на J Эшли'ы комментарий. Я столкнулся с этой проблемой тоже. Получается, что Excel требуется:
Символ новой строки (с"\П" и) в строку в кавычках
Возврат каретки и перевод строки между каждой строки.
Е. Г. на "Тест" и "Ну многострочный элемент\Н многострочный элемент" в\р\н "и test2 на глаз", "в многострочный элемент\Н многострочный элемент" в\р\н
Я использовал Notepad ++ для правильного разделения каждой строке и использовать только символы новой строки в строку. Обнаружил это путем создания многострочных записей в пустой файл Excel и открываем файл CSV в Notepad ++.
Используйте Google Таблицы и импортировать файл CSV.
Затем вы можете экспортировать это в Excel
Если кто случайно наткнется на эту ветку и ищет однозначного ответа здесь идет (кредит человеку, упоминая в LibreOffice:
Вставить в Notepad++, выберите кодировку и GT; кодировать в ANSI, копировать все снова и вставить в Excel :)
Мой опыт работы с Excel 2010 на WinXP с Французский язык и региональные параметры
У меня была похожая проблема. У меня были некоторые данные Twitter в MySQL. Данные строки( LF или \n), с Данные. У меня было требование экспорт данных MySQL в Excel. ЛН было испортить мой импорт из файла CSV. Поэтому я сделала следующее -
Примечание - при замене кода crlf или LF не забудьте проверить Excended флажок (\н\р\т... [смотрите на левой нижней стороны окна)
Обзор # Почти через 10 лет после оригинального поста, Excel и еще'т улучшения в импорте CSV-файлов. Однако, я обнаружил, что это гораздо лучше в импорте HTML-таблицы. Таким образом, можно использовать Python, чтобы преобразовать CSV в HTML и затем импортировать полученный HTML в Excel.
Преимуществами такого подхода являются: (а) работает надежно, (б) вы Don'т нужна, чтобы отправлять ваши данные третьим лицам услуги (например, Google Таблицы), (с) без дополнительной "на сало" и установок, необходимых (в LibreOffice, цифры и т. д.) для большинства пользователей, (г) более высокий уровень, чем вмешательство с CR/НЧ-персонажи и маркеры спецификации (е) не нужно возиться с настройками локали.
Шаги
Следующие шаги могут быть запущены на любом Баш-как Shell как установить Python 3-это. Хотя Python может использоваться, чтобы непосредственно читать CSV, csvkit используется для промежуточного преобразования в JSON. Это позволяет избежать необходимости иметь дело с тонкостях CSV в наш Python-кода.
Во-первых, сохраните следующий скрипт
json2html.py
. Скрипт считывает JSON-файла из stdin и выводит его как HTML-таблицу: ``питон!/usr/Бен/ОКР питон3
импорт sys файлы, в формате JSON и HTML
если имя == 'основной': header_emitted = ложь make_th = лямбда х: " и в<ом>%ы</й>" по % (по HTML.побег(ы, если еще собака и кот;)) make_td = лямбда х: " в<тд>%ы</тд>" по % (по HTML.побег(ы, если еще собака и кот;)) make_tr = лямда-л, make_cell: " и<тр>%ы</тр>" на % (на " глаз".присоединить([make_cell(V) для V в л]) ) печать(" и в<html-код><тело и GT;\п<Таблица> наша") для строки в JSON.нагрузки(представление sys.устройства stdin): ЛК, ЛВ = зип(*линии.элементы()) если не header_emitted: печати(make_tr(ЛК make_th)) header_emitted = истина печати(make_tr(ЛВ make_td)) печать (на"</стол\п</тело></HTML-код> наша") ``
Затем установите csvkit в виртуальной среде и использовать csvjson для подачи входного файла в наш сценарий. Это хорошая идея, чтобы отключить тип клетки угадал с
-я
аргумент: `раковину $ виртуальное окружение -п питон3 pyenv $ . ./pyenv/bin/активировать $ типун установить csvkit $ csvjson -я ввода.КШМ | питон3 json2html.py > output.html ``Сейчас output.html могут быть импортированы в Excel. Переносы строк в ячейках будут сохранены.
При необходимости, вам может понадобиться для очистки виртуальной среды Python: `раковину $ деактивировать $ РМ -РФ pyenv ``
Что работал для меня, чтобы импортировать в Excel непосредственно при условии, что импорт делается как текст, а не формат как формат CSV. М/
просто создайте новый лист с ячейками с новой строки, сохранить его в CSV, затем откройте его с помощью редактора, который может показать символы конца строки (как Notepad++). Делая это, вы заметите, что перевод строки в ячейке дается если во время и "Реал" в конце строки кода с CR ЛФ. Вуаляà, теперь вы знаете, как создать и "правильные" в CSV-файл для Excel.
Я также имел эту проблему: т. е.. файлы CSV (разделители-запятые, двойные кавычки строки с разделителями) с НЧ в кавычках. Эти площади были загружены файлы. Я сделал импорт данных, но вместо того, чтобы импортировать в текстовые файлы, импортированные как "из HTML и". На этот раз он проигнорировал НЧ's в кавычках.
Это работает на Mac, используя CSV и открываем файл в Excel.
С помощью Python, чтобы писать в файл CSV.
данные= '"в первой строке ячейки А1\Р 2 строки в ячейке A1\р 3-й строке в ячейке A1 и","в ячейке B1" и"Ну 1-й линии в ячейке С1\Р 2 строки в ячейке C1 на"\П"в первой строке в ячейке А2 на"\П'
файл.записи(данные)
На macOS попробовать с помощью чисел
Если вы имеете доступ к Mac OS я нашел, что таблица Яблоко числа делает хорошую работу раскручивать сложный многоканальный CSV-файл, который Excel не может справиться. Просто откройте `.CSV-файл с номерами, а затем экспортировать в Excel.
В моем случае открытие CSV в Notepad++ и добавляете
сентября=то","
в качестве первой линии позволяет мне открыть CSV с переносами строк и UTF-8 в Excel, без проблемЗамените сепаратор с табуляции(\T) вместо запятой(,). Затем откройте файл в текстовом редакторе (блокнот и т. д.), скопировать содержимое оттуда, а затем вставить его в файл Excel.