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

32

Я генерирую файл CSV с расширением .csv, в котором каждый фрагмент данных в одной строке разделяется запятой:

1,2,3,4
1,2,3,4

Файл отправляется по электронной почте, и я хочу, чтобы, когда клиент открывает его, он видел данные, сгруппированные в столбцы.

Возможна ли такая вещь?

PS: я могу свободно менять разделитель.

Timofey
источник
1
Насколько мне известно, вы ничего не можете сделать, кроме импорта данных в Excel, поскольку Excel не может делать какие-либо предположения о структуре самих данных (например, используемый разделитель, формат десятичных дробей или общий формат). данных).
slhck
@slhck, пожалуйста, посмотрите на ответ
Тимофей
О, я не знал, что Excel способен на это. Хороший.
slhck
1
Просто дважды щелкните файл CSV, Excel откроется, и файл будет отображаться правильно. Я прав?
Уилсон
@wilson: Excel должен быть связан с открытием файлов .csv, после чего при двойном щелчке по файлу .csv будет запущен файл Excel
Timofey

Ответы:

10

Используйте вкладку вместо запятой. И если это не сработает, дайте вашему файлу с разделителями табуляции расширение xls.

Джоэл Коухорн
источник
спасибо за решение, я оставил .csv как расширение файла
Timofey
не работает для Excel 14.7.1 на Mac (2017)
masukomi
3
«PS: я могу свободно изменить разделитель». делает этот ответ менее действительным
Пол Фиджма
Это не ответит, как загрузить файл CSV, так как C обозначает запятую.
Дж. Бернардо
@JBernardo Это было когда-то, но сегодня вы найдете файлы с расширениями CSV в дикой природе со всеми видами разделителей: табуляция, канал, запятая, тире, @, \ 0 и т. Д. Правильно или нет, они там и часть вопроса «Я могу изменить разделители» делает этот ответ действительным.
Джоэл Коухорн
43

если это только для того, чтобы получить csv читабельность в каждой системе, есть недокументированный трюк: в первой строке пишите SEP=;. Эта строка сообщает EXCEL, какой символ использовать в качестве разделителя (фактически вы можете использовать любой (один) символ ( ;,|@#'...))

ПРИМЕЧАНИЕ: эта строка является частью самого csvфайла. Он не станет частью распространения в EXCEL. это означает, что он не будет показан и не будет записан, независимо от того, какой формат вы определяете для записи или экспорта.

Stephan
источник
Это было спасение жизни! Отлично сработало здесь!
Этьен Дюпюи
лучшее решение ИМХО, так как оно должно работать со всеми языками
mBardos
39

Поведение Excel при открытии файлов CSV сильно зависит от ваших локальных настроек и используемых list separatorв Region and language » Formats » Advanced. По умолчанию Excel будет предполагать, что каждый CSV был сохранен с этим разделителем. Что верно, если CSV не прибыл из другой страны!

Если ваши клиенты находятся в других странах, они могут увидеть другие результаты, чем вы думаете.

Например, здесь вы видите, что немецкий Excel будет использовать точку с запятой вместо запятой, как в США. введите описание изображения здесь

Чтобы еще больше сбить вас с толку, эта настройка мешает десятичному символу, который можно установить отдельно в Excel Options » Advanced » Use system separatorsрегиональных настройках или с помощью региональных настроек, как показано выше. Excel не может использовать тот же символ, что и десятичная табуляция и разделитель списка. Он будет автоматически использовать запятую или точку с запятой в качестве разделителя резервных копий. Подробнее

Я возьму ваш пример, чтобы создать 3 файла. У каждого свой разделитель и откройте его в Excel.

    COMMA               SEMICOLON                     TAB 

введите описание изображения здесьвведите описание изображения здесьвведите описание изображения здесь

Не так, как ваш Excel? Я так думала.

Итак, давайте вручную изменим расширение с тех же файлов CSV на XLS и посмотрим, что происходит сейчас. Во-первых, Excel выдаст предупреждение о том, что расширение файла не соответствует содержимому, и Excel пытается угадать, что внутри.

    COMMA        SEMICOLON                   TAB 

введите описание изображения здесьвведите описание изображения здесьвведите описание изображения здесь

Вывод: TAB + переименование + игнорировать предупреждение = Win на каждой системе?
Возможно, но я не был бы так уверен для клиентов за пределами вашей страны.

Лучший способ - попросить ваших клиентов сначала открыть пустой Excel, а затем перейти Data » Get data from textи вручную выбрать запятую в качестве разделителя.

nixda
источник
2
Этот ответ отличный, но я нахожу это жалким от Microsoft. Вы открываете CSV в Numbers, и он открывается правильно. Вы открываете его в листах Google, и он открывается правильно. Затем вы открываете его в Excel, который является единственным, за который вы платите, и ... Ничего. Как насчет тех из нас, кто никогда не устанавливал разделитель списка? Теперь мне нужно тратить время, пытаясь заставить его работать, потому что "запятые" ничего не значат в этом "CSV". Очень расстраивает.
Коснитесь
> Это решение работает для меня (Excel 2013). Я настраиваю свой региональный формат: я устанавливаю точку (.) Как «десятичный разделитель», запятую (,) как «разделитель тысяч» и запятую (,) как «разделитель списка» - cesargastonec 13 июля 15 в 16: 05
Alex78191
Или вы можете изменить десятичный разделитель в параметрах Excel superuser.com/a/1470373
Alex78191
1

Вы можете заменить «.csv» на «.txt», запустить Excel и открыть этот файл .txt. Затем Excel покажет вам помощника, где вы можете указать «» в качестве разделителя. Когда вы снова сохраните этот файл как .csv, в следующий раз Excel откроет его так, как вам нужно.

daviii
источник
0

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

rawtext
источник
0

Это самый глупый ответ, но он сработал. Я использую файлы CSV ежедневно. Я создаю их все время и смотрю в Excel. Сегодня, после 12 лет никогда не видя этой проблемы, это случилось со мной. Он не будет открывать CSV-файл и форматировать столбцы. Даже некоторые CSV-файлы, которые я создал вчера вечером с помощью Excel, открывались в один столбец на строку.

Решение. Проверьте диспетчер задач на наличие всех открытых экземпляров Excel.exe. Убейте все экземпляры и попробуйте снова открыть файл csv.

Facepalm

Рики
источник
0

В краткосрочной перспективе, если вам нужно только открыть файл CSV, который был отправлен вам из другой страны -

Откройте файл в WordPad и используйте поиск и замену, чтобы изменить каждый разделитель, используемый в стране выдачи (например,;), и замените запятую. (например,).

Просто проверьте, что страна-эмитент не использует запятую вместо другого символа (например, в Испании они используют запятую, где мы используем десятичное место, поэтому вам нужно будет найти и заменить запятую на десятичное место, а затем найти и заменить другой символ с запятой).

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

Стив Декстер
источник
0

Я подошел к той же проблеме. У меня был файл CSV, который Excel неправильно анализировал, и мне нужен был мастер импорта.

Простым решением было переименовать CSV в TXT, и появился Мастер, помогающий правильно распознать структуру столбца.

Ян Барес
источник
0

Ответ, связанный с этим - особенно для проблем MacOS / OSX с распознаванием запятых
в Excel : в Excel 2019 неправильно открывается CSV - нет разбора столбцов: /superuser//a/1506042/1116939

Ярослав Николаев
источник