Как открыть CSV-файлы, разделенные точкой с запятой, в американской версии Excel

95

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

Используя немецкую настройку Windows / Excel, открытый файл отображается правильно, столбцы разделяются там, где в csv-файле существовала точка с запятой.

Но когда я делаю то же самое в английской (Windows-) настройке Windows / Excel, импортируется только один столбец, показывающий все данные, включая точки с запятой в первом столбце.
(У меня нет настройки английского языка для тестов, пользователи сообщили о поведении)

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

Что я могу сделать, чтобы иметь возможность дважды щелкнуть по этим CSV-файлам на английском языке?

РЕДАКТИРОВАТЬ:
Кажется, это лучшее решение не полагаться на CSV-файлы в этом случае. Я надеялся, что есть какой-то формат для CSV-файлов, который позволит использовать их на международном уровне.
Лучшим решением кажется, что я переключусь на создание XLS-файлов.

Holgerwa
источник
1
Вы можете порекомендовать своим пользователям использовать LibreOffice Calc - он прекрасно обрабатывает CSV с произвольными разделителями.
naught101

Ответы:

1

Эти файлы распространяются? скачал? Локально генерируется?

Я думаю, что единственный способ решить вашу проблему без доступа к ПК пользователя и без него, чтобы сделать что-то отличное от «двойного щелчка» по файлу, - это преобразовать файлы в .xls перед распределением или размещением для загрузки или создания .xls (или другой формат, который работает) вместо файла .csv. Вы можете сделать это с помощью сценария или вручную с рабочим Excel, в зависимости от количества файлов и способа их создания.

Laurent
источник
да, я думаю, что это лучший способ напрямую создавать XLS-файлы. Я надеялся, что есть какой-то формат для CSV-файлов, который делает их пригодными для международного использования, но если это невозможно, XLS-файлы будут работать независимо от того, где.
Холгерва
8
Как это правильный ответ, это бесполезно.
Стиви Дж
Ужасный ответ - см. Другой голос против.
СВК
203

Добавьте это в первую строку файла CSV:

sep=;

или же

sep=,

Это переопределит системные настройки («символ разделителя списка»), и Excel откроет файл правильно.

АТХ
источник
4
+1 сделал это в Excel 2010, и он работал отлично.
Н Рид
8
Есть ли список других таких настроек? Указание Excel использовать, поскольку десятичный разделитель обычно сопровождается указанием его использовать; в качестве разделителя столбцов.
ZweiBlumen
5
Отлично работает для Excel, но учтите, что это может не поддерживаться в других программах для работы с электронными таблицами или данными. Это может быть только небольшая проблема, просто показывающая дополнительную первую строку с ней sep=или sep=;внутри нее, но некоторые автоматизированные программы или сценарии могут не ожидать дополнительной первой строки, что приводит к тому, что заголовки столбцов или сама sep=;строка интерпретируются как фактические данные.
Сигморал
5
Будьте осторожны с этим. Если вы сохраните в Excel, он будет: - удалить спецификацию разделителя - сохранить с разделителем региональных настроек
Bjinse
1
Можно подтвердить fwrite($fileHandle, 'sep=,' . "\r\n");полностью исправленную проблему с fputcsvPHP.
h2ooooooo
26

Вы можете использовать Мастер импорта текста. Это не работает при двойном щелчке, но это лучшее, что я могу придумать, это не связано с манипуляциями с настройками языка.

В Excel 2003 в строке меню перейдите Data-> Import External Data-> Import Data(не могу сказать, где он находится в 2007 году, сейчас у меня нет этого). Найдите и выберите файл CSV.

Когда он открывается, вы получаете Text Import Wizard, который позволяет указать разделитель (и) для использования.

DMA57361
источник
В Outlook 2007 перейдите на вкладку «Данные», выберите столбец и нажмите кнопку «Текст в столбцы» в наборах инструментов данных.
Hondalex
1
Да, это решение. К сожалению, пользователи, которым нужно просматривать данные, не хотят этого делать. Они могут справиться с «двойным щелчком», но не смогут сделать что-нибудь более сложное. Мы пытались хоть немного их воспитать, но они отказываются.
Холгерва
1
@ Holgerwa - возможно ли запустить файлы через какой-то процесс преобразования, прежде чем отдавать их пользователям? Или они должны остаться разделенными точкой с запятой? Другие предложили это, но довольно легко поменять местами точки с запятыми, используя какой-то сценарий (я бы посоветовал не просто находить / заменять, потому что вы не хотите преобразовывать эти внутри кавычек).
DMA57361
6

Смотрите эту статью:
Проблемы с открытием файлов CSV в Excel? Проблема с запятой и точкой с запятой в Excel из-за региональных настроек для Европы

Который предлагает 3 решения:

  • Измените расширение файла CSV на TXT (когда вы открываете файл TXT в Excel, он запустит мастер импорта текстовых файлов, где вы сможете выбрать разделитель)
  • Замените все «,» на «;» в ваших файлах CSV
  • Измените региональные и языковые настройки

Поскольку вы изменили только значение разделителя списка в региональных настройках Windows, отмечу, что в статье говорится, что нужно вводить «.» Для Decimal Symbolи «,» для List Separator.

Если вы чувствуете себя комфортно с VBA, то смотрите:

Открытие файла CSV с разделителями точкой с запятой в VBA в Excel 2000
Экспорт и импорт текста в Excel

harrymc
источник
Я согласен, все допустимые варианты, но, к сожалению, я не нахожусь в нормальной ситуации с пользователями этих CSV-файлов. Импорт .TXT не будет работать (см. Мой комментарий к ответу DMA57361), замена точек с запятой не будет работать из-за проблем с десятичным разделителем, а изменение региональных настроек не будет работать, потому что у меня нет доступа к ПК, которые используются. Пользователи будут просто дважды щелкать файлы, и если они не получат то, что ожидают, они будут жаловаться и отказываться помочь в решении проблемы.
Холгерва
@Holgerwa: Если вы не контролируете пользовательские ПК, вы ничего не можете сделать. Потому что другим моим предложением было бы изменить обработчик на расширение .csv, чтобы он стал вашей собственной программой, которая будет корректировать (но разумно) разделители и вызывать Excel.
harrymc
@Holgerwa: Пожалуйста, обратите внимание на мои изменения выше относительно региональных настроек.
harrymc
3

Лучший способ, которым я пробовал, это установить региональные настройки вашего компьютера, как показано ниже:

  • в поле «Стандарты и форматы» выберите «Английский (США)»;
  • в разделе «Локации» выберите «США».

Это работает для меня, просто попробуйте.

язь
источник
На самом деле, проблема ОП заключается в обратном. Должен измениться на европейский регион, чтобы получить запятую в качестве десятичного знака, а затем точка с запятой будет разделителем списка.
Ёш м
0

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

DHayes
источник
Эти CSV-файлы должны работать в разных странах (региональных настройках), а во многих региональных настройках запятая - это десятичный разделитель, а не точка. «Стандартный» файл с разделителями-запятыми не будет работать. Я думаю, что именно поэтому точки с запятой были добавлены в качестве допустимого разделителя для CSV-файлов.
Холгерва