Как заставить Excel импортировать файл CSV с запятыми в некоторые поля содержимого?

13

Как мне заставить Excel импортировать мой файл CSV ?

файл

У меня есть файл, претендующий на звание CSV. Он содержит 10 полей, все из которых заключены в двойные кавычки (да, даже даты и цифры). 2 или 3 из этих полей содержат запятые . Но данные в этих полях также заключены в кавычки.

проблема

Когда я пытаюсь открыть этот файл, Excel полностью игнорирует кавычки и предполагает, что они являются частью данных.

Поэтому он разбивает поля, содержащие запятые, на несколько столбцов.

Это плохо, по крайней мере для меня.

Пример данных

"20051", "", "2009 Sep 30 02:53:23", "SOMETEXT", "", "5000", "2000000", "2008 - 99999 - -99999, 2008 - unk - unk", "191 - SOMETEXT - SOMETEXT, 192 - SOMETEXT - SOMETEXT, 193 - SOMETEXT - SOMETEXT, 194 - SOMETEXT - SOMETEXT, 195 - SOMETEXT - СОМЕТЕКСТ, 196 - SOMETEXT - СОМЕТЕКСТ, - 46 - SOMETEXT, 140 СОМЕКСТОВ, СОМЕТЕКСТ - SOMETEXT - SOMETEXT, 141 - SOMETEXT - SOMETEXT "
"20052", "SOMETEXT", "2009 Sep 08 07:56:50", "SOMETEXT", "", "50000", "5000000", "2007 - 99999 - 99999", "146 - SOMETEXT - SOMETEXT, 145 - SOMETEXT - SOMETEXT, 147 - SOMETEXT - SOMETEXT, 148 - SOMETEXT - SOMETEXT "," 103 - SOMETEXT - SOMETEXT, 1131 - SOMETEXT - SOMETEXT "

Что я пробовал?

Я использовал средство импорта для указания разделителей и тому подобного, но это, похоже, не помогает.

Я попытался переключить «Разделитель текста» с двойной кавычки на «{нет}» и обратно. Похоже, это влияет только на первый столбец. Это было бы разумно, если бы можно было щелкнуть другие столбцы и применить этот параметр к каждому. Но это не так, и похоже, что он предназначен для работы через столбцы.

Что еще я могу попробовать?

Рори Беккер
источник
1
Какая версия Excel? И это полностью исправлено?
Harrymc
Я видел это в 2002 и 2007 годах. Я не уверен насчет 2007 года, но я уверен, что 2002 год был полностью обновлен
Рори Беккер
Можете ли вы предоставить ссылку на CSV? Или урезанная версия, которая демонстрирует проблему?
Джош Комли
Пример добавления данных выше
Рори Беккер,

Ответы:

13

Я только что попробовал быстрый тест, который повторил вашу проблему.

Я создал CSV с 1 строкой в ​​Word (который использует умные кавычки) как test.csv «123», «4,5,6», и он открылся в Excel, как вы описали.

Попробуйте заменить «и» на «


Поиграв с вашим образцом, я замечаю, что Excel не нравится пробелы между полями

например, вместо

"20051", "", "2009 Sep 30 02:53:23", ...

ты хочешь

"20051","","2009 Sep 30 02:53:23",...

достойная замена регулярного выражения должна быть в состоянии справиться с этим

Find:    |("[^"]*",) |
Replace: |\1|

(символы канала только для визуальных подсказок)

Или просто измените код .Net, если у вас есть к нему доступ ;-)

Кроме того, как указал Арджан , вам также может понадобиться преобразовать файл из UTF-8 в ANSI, чтобы ячейка A1 не содержала спецификацию и окружающие ее квоты.

Я сталкивался с Catch 22 CSV в кодировке ANSI, не обрабатывающей международные символы, и CSV в кодировке UTF, которая не обрабатывается Excel должным образом; и не нашел решения при включении CSV. Если требуется поддержка международных символов, форматы XML (или собственные XLS) кажутся единственным выходом - за счет простоты.

Сообщество
источник
Никаких умных цитат не предусмотрено. Этот файл был создан для использования кавычек std из программы, написанной на .Net.
Рори Беккер
Я не собирался говорить, что файлы UTF-8 должны кодироваться по-другому. Но при импорте UTF-8 действительно нужно сказать Excel, что такое кодировка. И UTF-8 спрятан где-то внизу в этом длинном списке кодировок.
Арьян
Я импортировал много файлов CSV в кодировке UTF-8. Я уверен, если у них есть спецификация.
Арьян
@lumbarious: Вы ЗВЕЗДА! Работает отлично ... Я не могу поверить, что Excel не может справиться с этим :(
Рори Беккер
1
Да, очевидно, пробелы между полями полностью сбивают с толку Excel 2011. Удаление пробелов устраняет проблему, а также не позволяет Excel включать кавычки как часть данных. Я предполагаю, что где-то есть спецификация, в которой говорится, что двойные кавычки только разграничивают данные, если они непосредственно примыкают к запятой.
Питер Глюк
9

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

Это пробел после запятой!

Это не импортирует в Excel;

HEADER1, HEADER2
"1,000", "2,000"

Пока

HEADER1,HEADER2
"1,000","2,000"

Работает!

Марк Милборн
источник
3
Добро пожаловать в Супер пользователя! Этот ответ был написан полезным и понятным способом. Спасибо за ваш вклад, и мы надеемся, что вы остаетесь.
user1717828
YAAAS! Принятый ответ имеет реальный ответ на вопрос, похороненный в отличие от этого ответа. Операция не использует умные кавычки.
Дардуб
2

Вы также можете попробовать CSVEd, который является бесплатным.

Алан Б
источник
2

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

Если вы не случайно используете умные кавычки, как предложили люмбарии , и предполагаете, что используете Windows: это может быть связано с вашими региональными настройками. При двойном щелчке или использовании «Файл» Открыть, Excel не запрашивает никаких подробностей, а просто использует эти настройки.

Тем не менее, ручной вызов функции импорта (как и вы) должен был работать, поэтому я сомневаюсь, что изменение региональных настроек поможет ...

Арьян
источник
Это больше похоже на комментарий, чем на ответ ...
Metafaniel
Это предложение решило мою проблему точно! Выполнение импорта в CSV (Данные> Из текста / CSV) не работало должным образом, но если я просто сделал Файл> Открыть для файла CSV, это сработало. Тогда я смог просто скопировать / вставить всю таблицу в мою другую рабочую книгу.
WOUNDEDStevenJones
1

Вы проверили кодировку символов вашего файла? Попробуйте установить кодировку символов в UTF-8.

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

Джош Комли
источник
Notepad2 сообщает, что кодировка «UTF8 с подписью»
Рори Беккер,
Затем при импорте необходимо прокрутить список кодировки вниз. UTF-8 спрятан где-то внизу списка. (Нет необходимости использовать файлы CSV в кодировке UTF-8, но поскольку вы уже используете UTF-8, вам действительно нужно указать Excel, что следует использовать. Обратите внимание, что обычный символ кавычки будет закодирован одинаково в ASCII, Western и UTF -8, но может быть подпись (знак порядка байтов) или какие-то другие символы испортили?)
Арджан,
@Peter Зачем менять официальную ссылку на Википедию? Это не имеет никакого смысла вообще? Мы не хотим слишком много разослать людей, и это, безусловно, не требует редактирования - особенно в двухлетнем посте.
slhck
1

Просто добавьте к ответам здесь: сфокусируйтесь на ПРОСТРАНСТВАХ после КОМАС в ваших файлах CSV. Excel не нравится это, если вы указали в своих данных в кавычках поля.

Excel любит (4 столбца данных):

a, b, c, d

Но не нравится (3 столбца данных):

a, "b, c", d

Это как (3 столбца данных):

a,"b, c",d
DocOc
источник
Я просто столкнулся с этой проблемой. Я билась головой о стену, пока не добралась до этой записки. Это просто потрясающе. Я использую Excel 2017, и эта глупость все еще существует ...
Альберт Годфринд
1

Я столкнулся с этой проблемой сегодня и также нашел решение, которое работало для меня.

Моя среда / контекст: у меня есть веб-страница с некоторыми вопросами (формами), которые содержат как двойные кавычки, так и запятые. И вопросы, и ответы извлекаются из базы данных и записываются в файл Excel для целей отчетности.

У меня была та же проблема, описанная выше: вопросы, которые включали в себя как двойные кавычки, так и запятые, были разбиты на несколько столбцов в Excel.

Для моих целей использование двух одинарных кавычек вместо двойных кавычек сделало свое дело.

-> на сайте две одинарные кавычки выглядят как двойная кавычка для посетителей сайта

-> В файле Excel снова две одинарные кавычки выглядят как двойные кавычки для пользователей, просматривающих данные отчета

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

Джеральд
источник
1

Я смог сделать это с помощью:

a,b,c,"=""(1,2,3)"""

который дает четыре столбца:

|  a  |   b   |   c   |   (1,2,3)   |
Johnb
источник
0

Еще один способ сделать это:

  1. Откройте файл в LibreOffice или OpenOffice Calc.
  2. Установите правильные параметры импорта, такие как UTF-8, через запятую, ...
  3. Сохраните файл как ods или xls
  4. Откройте новый файл в Excel.

Таким образом, вы можете установить правильную кодировку, например UTF-8, которую многие (все?) Версии Excel не могут правильно обрабатывать без спецификации, и вам не нужно беспокоиться о регулярном выражении, которое может заменить некоторый текст внутри поля и ты этого не замечаешь

+12431234123412341234123
источник