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

52710
Rory Becker

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

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

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

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

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

12
Какая версия Excel? И это полностью исправлено? harrymc 14 лет назад 1
Я видел это в 2002 и 2007 годах. Я не уверен насчет 2007 года, но я уверен, что 2002 год был полностью обновлен Rory Becker 14 лет назад 0
Можете ли вы предоставить ссылку на CSV? Или урезанная версия, которая демонстрирует проблему? Josh Comley 14 лет назад 0
Добавлен пример данных выше Rory Becker 14 лет назад 0

8 ответов на вопрос

13
Community

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

Я создал 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. Rory Becker 14 лет назад 0
Я не собирался говорить, что файлы UTF-8 должны кодироваться по-другому. Но при импорте UTF-8 действительно нужно сказать Excel, что такое кодировка. И UTF-8 спрятан где-то внизу в этом длинном списке кодировок. Arjan 14 лет назад 0
Я импортировал много файлов CSV в кодировке UTF-8. Я уверен, если у них есть спецификация. Arjan 14 лет назад 0
@lumbarious: Вы ЗВЕЗДА! Работает отлично ... Я не могу поверить, что Excel не может справиться с этим :( Rory Becker 14 лет назад 0
Да, читая еще раз, я вижу, что ты это сказал. Так получилось, что у меня только Excel XP (2002), чтобы играть с ним в данный момент, и у него нет UTF-8 в списке :-( Но странно, что «1361: Korean (Johab)», кажется, работает -shrug- 14 лет назад 0
Да, очевидно, пробелы между полями полностью сбивают с толку Excel 2011. Удаление пробелов устраняет проблему, а также не позволяет Excel включать кавычки как часть данных. Я предполагаю, что где-то есть спецификация, в которой говорится, что двойные кавычки только разграничивают данные, если они непосредственно примыкают к запятой. Peter Gluck 9 лет назад 1
В этом конкретном случае, когда есть кавычки вокруг ** всех ** полей, вы также можете исправить это, просто выбрав в качестве разделителей _comma_ ** и ** _space_. Кавычки не позволят рассматривать пробелы в полях как разделители. Также @PeterGluck, к сожалению, нет спецификации для файлов .csv. См. Статью в Википедии, на которую есть ссылка в начале вопроса ОП. Несмотря на это, Microsoft точно не реализовала наиболее часто используемые функции файлов .csv. GlennFromIowa 7 лет назад 0
7
Mark Milbourne

This problem has been plaguing me for a number of years. I just discovered the solution and it's alluded to in the answers above but not explicitly spelled out.

It's the space after the comma!

This doesn't import into excel;

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

While

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

Works!

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

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

2
Arjan

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

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

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

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

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

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

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

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

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

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

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

I ran across this problem today and also found a solution that worked for me.

My environment / context: I have a web page with some (form) questions that contain both double quotes and commas. Both the questions and the answers are pulled out of the database and written to an Excel file for reporting purposes.

I had the same problem described above: The questions that included both double quotes and commas were being split into multiple columns in Excel.

For my purposes, using two single quotes in place of a double quote did the trick.

--> on the website, two single quotes look like a double quote to site visitors

--> In the Excel file, again, two single quotes look like a double quote for users viewing the report data

I realize that this solution won't work for everyone, but hopefully it will help someone.

1
DocOc

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

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

a, b, c, d 

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

a, "b, c", d 

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

a,"b, c",d 
Я просто ударил эту проблему. Я билась головой о стену, пока не добралась до этой записки. Это просто потрясающе. Я использую Excel 2017, и эта глупость все еще существует ... Albert Godfrind 6 лет назад 0

Похожие вопросы