2013-04-30 3 views
4

У меня есть файл CSV, у которого есть DateTime Column, который я использовал php для изменения, чтобы он был в этом формате, 02/18/2013 03:53:48 PMОткрытие CSV-файла в excel меняет мои форматы

но когда этот файл открыт в Excel все форматы изменяются в этот формат, 02/18/2013 15:53 ​​

Теперь это не будет проблемой для меня, чтобы посмотреть или иметь дело с но я хочу, чтобы конечный пользователь не должен был смотреть на время в 24-часовом формате в excel. Как заставить excel не изменять свой формат после открытия csv и разрешить конечному пользователю сортировать этот столбец DateTime без каких-либо проблем. Я знаю, что могу изменить формат даты, форматируя ячейки, как только я открою файл, но я не хочу, чтобы конечный пользователь даже должен был сделать этот шаг.

Я также хотел бы указать, что когда я выбираю ячейку, панель формул покажет мой столбец DateTime в формате, который я хочу, что меня озадачивает.

ответ

5

Файлы CSV не имеют формата, они просто содержат данные.

MS Excel рассмотрит эти данные и попытается установить для него соответствующий формат. Например, это означает правильное числовое значение. Он может распознавать строку, содержащую значение даты/времени для человека, и преобразует ее в собственное значение timestammp (представленное как число с плавающей запятой), а затем применяет соответствующую соответствующую дату/временную маску к этой ячейке, так что это стили как дату или время, но не обязательно используя строковое представление, которое вы имели в вашем CSV-файле.

Решение №1, префикс форматированной строки даты с символом = и переносом в кавычки, чтобы он обрабатывался как строка.

Решение №2, напишите фактический файл Excel, в котором вы можете управлять форматированием ячеек.

+1

Ну, если я изменил дату на строку, я не могу сортировать от самого нового до самого старого правильно (это может быть причиной, по которой конечный пользователь хочет использовать excel). –

+0

Это недостаток, который оставляет решение №2 в качестве опции - для него есть преимущества oyjer, такие как возможность форматирования (например, жирная строка заголовка, замороженные панели, условное форматирование и т. Д.) –

+0

Вариант 2 может быть единственным решение. Спасибо за ваш вклад. –

1

Если вы хотите контролировать формат окончательного файла Excel, вам нужно будет вывести ваши данные в этот формат и соответствующим образом изменить его с помощью библиотеки PHP Excel. Я не могу точно сказать, как это сделать, поскольку я не знаю, какую библиотеку вы можете использовать.

Я использовал http://phpexcel.codeplex.com/ в какой-то степени успеха

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

+0

Я буду смотреть на это. –

0

Они будут отображаться во время установки в Windows или (если пользователи установят ее разные) в Office. Если вы хотите что-то похожее на дату/время, которое НЕ отформатировано приложением Excel при открытии, вы не должны указывать дату/время в первую очередь.

Excel будет видеть все, что rpeceded на одной прямой цитатой в виде текста, так что вы можете хранить свои значения даты/времени, как "'02/18/2013 03:53:48 PM"

+0

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

+0

Извините за это, я изменил свой ответ в соответствии с тем, что вы на самом деле ищете –