Импорт CSV с разрывами строк в Excel 2007
Я работаю над функцией экспорта результатов поиска в CSV-файл, который будет открыт в Excel. Одно из полей-это бесплатная текстового поля, которые могут содержать разрывы строк, запятые, цитаты и т. п. Чтобы противодействовать этому, я завернул поле в двойные кавычки («).
однако, когда я импортирую данные в Excel 2007, устанавливаю соответствующий разделитель и устанавливаю квалификатор текста в двойную кавычку, разрывы строк все еще создают новые записи в разрывах строк, где я бы ожидайте увидеть все текстовое поле в одной ячейке.
Я также попытался заменить CR / LF (rn) только CR (r) и снова только LF (n), но не повезло.
кто-нибудь еще сталкивался с этим поведением, и если да, то как вы это исправили?
EDIT:
Вот быстрый файл, который я написал вручную, чтобы дублировать проблему.
ID, имя, описание
«12345», » Smith, Джо», » Привет.
Меня зовут Джо.»
когда я импортирую это в Excel 2007, я получаю строку заголовка и две записи. Обратите внимание, что запятая в «Smith, Joe» обрабатывается правильно. Это просто разрывы линий, которые вызывают проблемы.
19 ответов
Excel (по крайней мере, в Office 2007 на XP) может вести себя по-разному в зависимости от того, импортируется ли файл CSV, открыв его из меню Файл->Открыть или дважды щелкнув файл в Проводнике.
копировать / вставлять данные из csv-файла (открыть в Редакторе), затем выполнить «текст в Столбцах» — > не работает, все в порядке.
перейдите на следующую вкладку и скопируйте / вставьте снова (то же самое, что у вас уже есть в буфере обмена) —> автоматически работает сейчас.
оказывается, мы писали файл, используя кодировку Unicode, а не ASCII или UTF-8. Изменение кодировки в FileStream, похоже, решает проблему.
Если вы делаете это вручную, загрузите LibreOffice и используйте LibreOffice Calc для импорта CSV. Он делает гораздо лучшую работу, чем любая версия Excel, которую я пробовал, и он может сохранять в XLS или XLSX по мере необходимости, если вам нужно перенести в Excel после этого.
но если вы застряли с Excel и вам нужно лучшее исправление, кажется, есть способ. Кажется, это зависит от локали (что кажется идиотским, на мой скромный взгляд). У меня нет Excel 2007, но у меня есть Excel 2010, и приведенный пример:
не работает. Я написал это в блокноте и выбрал «сохранить как». и рядом с кнопкой Сохранить вы можете выбрать кодировку. Я выбрал UTF-8, как было предложено, но не повезло. Однако замена запятой точкой с запятой сработала для меня. Я больше ничего не менял,и это сработало. Поэтому я изменил пример, чтобы выглядеть так, и выбрал кодировку UTF-8 при сохранении в блокноте:
но есть загвоздка! Единственный способ это работает, если дважды щелкните файл CSV, чтобы открыть его в Excel. Если я пытаюсь импортировать данные из текста и выбрал этот CSV, то это еще не о цитируемых строк.
Итак, все детали, которые я смог собрать, чтобы получить это к работе относятся:
- файл должен быть сохранен как UTF-8 со спецификацией, что и делает Блокнот при выборе UTF-8. Я попробовал UTF-8 без BOM (можно легко переключаться в Notepad++), но затем дважды щелкнул документ не удается.
- необходимо использовать разделитель запятой или точкой с запятой, но не тот, который является десятичным разделителем в региональных настройках. Возможно, другие персонажи работают, но я не знаю, что.
- необходимо указать поля, содержащие новая строка с » персонажем.
- я использовал окончания строк Windows (\r\n) как в текстовом поле, так и в качестве разделителя записей, который работает.
- вы должны дважды щелкнуть файл, чтобы открыть его, импорт данных из текста не работает.
Если поле содержит начальное пространство, Excel игнорирует двойную кавычку в качестве квалификатора текста. Решение состоит в том, чтобы исключить ведущие пробелы между запятой (разделителем полей) и двойной кавычкой. Например:
разбито:
Имя,Название, Описание
«Джон», «Мистер», «мое подробное описание»
работает:
Имя,Название, Описание
«Джон»,»Мистер», «мое подробное описание»
CSV файл: чем открыть формат, софт для работы с расширением
- файл должен быть сохранен как UTF-8 со спецификацией, что и делает Блокнот при выборе UTF-8. Я попробовал UTF-8 без BOM (можно легко переключаться в Notepad++), но затем дважды щелкнул документ не удается.
- необходимо использовать разделитель запятой или точкой с запятой, но не тот, который является десятичным разделителем в региональных настройках. Возможно, другие персонажи работают, но я не знаю, что.
- необходимо указать поля, содержащие новая строка с » персонажем.
- я использовал окончания строк Windows (\r\n) как в текстовом поле, так и в качестве разделителя записей, который работает.
- вы должны дважды щелкнуть файл, чтобы открыть его, импорт данных из текста не работает.
Предлагаю обратить внимание на этот вариант, если с реализацией предыдущего возникли какие-то проблемы. У импорта файла CSV есть свои недостатки, поскольку весь документ в Google Таблицах придется сделать публичным. Если для вас это не имеет значения, приступайте к выполнению инструкции.