12

Как мне получить 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 - SOMETEXT, 196 - SOMETEXT - SOMETEXT", "45 - SOMETEXT - SOMETEXT, 1162 - SOMETEXT - 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"

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

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

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

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

8 ответов8

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) кажутся единственным выходом - за счет простоты.

7

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

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

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

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

В то время как

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

Работает!

2

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

2

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

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

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

1

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

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

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

|  a  |   b   |   c   |   (1,2,3)   |
1

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

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

a, b, c, d

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

a, "b, c", d

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

a,"b, c",d
1

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

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

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

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

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

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

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

1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .