24

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

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

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

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

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

7 ответов7

33

Поведение 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 и вручную выбрать запятую в качестве разделителя.

30

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

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

8

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

0

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

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

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

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

0

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

0

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

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

0

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

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

Facepalm

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