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


32

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

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

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

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

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


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. это означает, что он не будет показан и не будет записан, независимо от того, какой формат вы определяете для записи или экспорта.


Это было спасение жизни! Отлично сработало здесь!
— Этьен Дюпюи

лучшее решение ИМХО, так как оно должно работать со всеми языками
— 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и вручную выбрать запятую в качестве разделителя.


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 откроет его так, как вам нужно.


0

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


0

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

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

Facepalm


0

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

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

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

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


0

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

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.