Мне нужно сгенерировать довольно большие файлы Excel, и я думал о переходе с PHPExcel на spout, так как он кажется гораздо более эффективным. Мне удалось найти все нужные мне функции, кроме одной: как отформатировать ячейку как дату. Кажется, кажется, что по умолчанию все является строкой. Для чисел я обнаружил, что использование intval() или floatval() заставляет его считать значение числом, но есть ли что-нибудь похожее для дат?

Единственный обходной путь, который я нашел до сих пор, - преобразовать дату в число, используя (strtotime($datestr)/86400)+25569.4167, но затем вы должны вручную отформатировать столбец как дату после экспорта файла, но пользователи не примут это.

1
A. M. 18 Мар 2017 в 15:40

2 ответа

Лучший ответ

В конце концов, я нашел этот коммит на github https://github.com/box/spout / pull / 209, где они добавляют возможность форматировать даты и, среди прочего, индивидуально форматировать ячейки. Я знаю, что это не официальный релиз, и поэтому это «использование на свой страх и риск», но для меня это было именно то, что мне было нужно, поэтому я решил добавить ссылку на тот случай, если кто-то другой окажется в такой же ситуации. Предупреждение, однако, нарушает настройку цвета фона для ячейки и строки, но в моем случае это не было проблемой.

0
A. M. 27 Мар 2017 в 10:40

На данный момент нет способа отформатировать ячейку как дату. Вы всегда можете передать строку даты (например, «03/03/2017»); Excel обычно довольно хорошо понимает, что это дата.

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

1
Adrien 26 Мар 2017 в 16:18