Формат даты CSV

У меня есть приложение VB, которое извлекает данные и создает 3 файла CSV (a.csv, b.csv, c.csv). Затем я использую другую электронную таблицу Excel (import.xls), чтобы импортировать все данные из указанных выше файлов CSV в этот лист.

В файле import.xls есть макрос, который открывает файлы CSV один за другим и копирует данные. Проблема, с которой я столкнулся, заключается в том, что даты в файлах CSV хранятся как мм / дд / гггг, и они копируются как есть на лист Excel. Но мне нужна дата в формате дд / мм / ггг.

Когда я открываю любой из файлов CSV вручную, даты отображаются в правильном формате (мм / дд / гггг). Есть идеи, как я могу решить эту проблему?

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
0
35 064
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Когда я сталкиваюсь с этой проблемой, я обычно записываю даты в формате гггг-мм-дд, которые Excel интерпретирует однозначно.

это наиболее надежное из рекомендованных здесь решений. Способ взаимодействия Excel и VBA с языковым стандартом системы довольно непрозрачен, и легко получить странные результаты. Использование этого метода позволяет избежать большого количества кода и обычно не создает проблем для пользователей.

Simon 11.12.2009 20:45
Ответ принят как подходящий

Вы можете использовать функцию Формат VBA:

Format(DateText, "dd/mm/yyyy")

Это отформатирует его так, как вам нравится.

Для более постоянного решения попробуйте изменить региональные настройки в самой Windows, Excel использует это для форматирования даты.

Пуск -> Настройка -> Панель управления -> Региональные стандарты.

Убедитесь, что установлен подходящий язык и что настройки даты такие, какие вы хотите.

Количество записей велико, и в import.xls много листов. Есть ли другой способ сделать это автоматически?

Shoban 15.10.2008 09:52

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

Mark 15.10.2008 10:01

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

Shoban 15.10.2008 10:15

Во-первых, все остальные ответы хороши, но есть дополнительная информация, которая может оказаться полезной.

Файл CSV содержит только текст. То есть данные не в формате даты, а в текстовом формате. Поэтому, когда вы открываете файл CSV в Excel, Excel по умолчанию интерпретирует эти данные за вас. Это не обязательно. Вы можете заставить его оставить его как текст, или, как упомянул Марк, вы можете добавить код в свой макрос импорта, который изменит его за вас. Если вам нужен автоматизированный процесс, это лучшее решение. Просто добавьте код в VBA в макрос, который применяет требуемый формат даты к столбцу с данными даты. В качестве альтернативы вы можете сделать это вручную после открытия файла и вставки данных, выбрав столбец самостоятельно и изменив формат. Вы можете настроить числовые форматы (выбрать индивидуальный), а затем написать их самостоятельно. Например, дд / мм / гггг.

«Итак, когда вы открываете файл CSV в Excel, Excel по умолчанию интерпретирует эти данные за вас. Это не обязательно. Вы можете заставить его оставить его в виде текста» Как заставить его оставить его как текст?

Charlie Schliesser 06.07.2011 00:46

В файле CSV заключите его в кавычки и поставьте перед ним знак равенства, как показано ниже: = "дд / мм / гггг"

BengalTigger 20.08.2015 00:13

У меня была аналогичная проблема, и я решил ее вот так, по сути, это вариант «все вышеперечисленное»

  1. С format(date,'dd-mmm-yyyy') преобразовать дату в формат 2-3-4 например, 01 августа 2008, ни в коем случае компьютер ошибки 01 авг по 08 янв :-)
  2. Поскольку копирование этого в Excel автоматически возвращает его обратно в формат даты / времени, преобразовать результат в строку с помощью cstr на функция в 1
  3. Отформатируйте ячейки, в которых указана дата копируется как текст (если вы этого не сделаете, тупоголовый как Excel, он будет преобразовать его обратно в дату / время снова
  4. Сохраните лист как файл csv и откройте в блокноте, чтобы убедиться, что он работал

Некоторые люди могут сказать, что это излишне, но лучше перестраховаться, чем попросить пользователя вызвать мне через год и сказать, что он делает что-то странное с датой.

Другие вопросы по теме