Я знаю, что это старый вопрос, но проблема не исчезнет в ближайшее время. CSV-файлы легко генерируются из большинства языков программирования, довольно маленькие, легко читаемые человеком с помощью простого текстового редактора и вездесущие.
Проблема не только с date в текстовых полях, но что-либо числовое также преобразуется из текста в числа. Несколько примеров, где это проблематично:
- Почтовый индекс
- номера телефонов
- правительственные идентификационные номера
, который иногда может начинаться с одного или нескольких нулей (0), которые выбрасываются при преобразовании в числовое значение. Или значение содержит символы, которые можно спутать с математическими операторами (как в датах: /, -).
Два случая, о которых я могу подумать, что решение «prepending =», как упоминалось ранее, может быть не идеальным равно
- , где файл может быть импортирован в программу, отличную от MS Excel (на ум приходит функция слияния MS Word),
- где читабельность может быть важна.
Мой хак, чтобы обойти это
Если к значению до / добавляется нецифровый и / или не датированный символ, значение будет распознано как текст и не будет преобразовано. Непечатный символ будет хорош, поскольку он не изменит отображаемое значение. Однако обычный старый пробел (\ s, ASCII 32) не работает для этого, так как он отсекается в Excel, а затем значение все равно преобразуется. Но есть различные другие символы печати и непечатные символы, которые будут хорошо работать. Самым простым является добавление (добавление после) простого символа табуляции (\ t, ASCII 9).
Преимущества этого подхода:
- Доступно с клавиатуры или с легко запоминающимся кодом ASCII (9),
- Ввоз не беспокоит,
- Обычно не беспокоит результаты слияния (в зависимости от макета шаблона - но обычно он просто добавляет широкий пробел в конце строки). (Если это, однако, проблема, посмотрите на другие символы, например пробел нулевой ширины (ZWSP, Unicode U + 200B)
- не является большой помехой при просмотре CSV в Блокноте (и т. Д.),
- и может быть удален путем поиска / замены в Excel (или в Блокноте и т. Д.).
- Вам не нужно импортировать CSV, но можно просто дважды щелкнуть, чтобы открыть CSV в Excel.
Если есть причина, по которой вы не хотите использовать вкладку, найдите в таблице Unicode что-то еще подходящее.
Другой вариант
может быть для генерации файлов XML, для которых определенный формат также принимается для импорта более новыми версиями MS Excel, и который допускает намного больше опций, похожих на формат .XLS, но у меня нет опыта в этом.
Так что есть разные варианты. В зависимости от ваших требований / приложения одно может быть лучше другого.
Добавление
Нужно сказать, что в более новых версиях (2013+) MS Excel больше не открывается CSV в формате электронных таблиц - еще один быстрый удар в рабочем процессе делает Excel менее полезным ... По крайней мере, существуют инструкции для получения вокруг него. Смотрите, например это Stackoverflow: Как правильно отображать CSV-файлы в Excel 2013?
.