Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Записать даты в .xlsx через PHPExcel
Форумы портала PHP.SU » » Работа с файловой системой и файлами » Записать даты в .xlsx через PHPExcel

Страниц (1): [1]
 

1. dahujika - 27 Февраля, 2016 - 08:08:33 - перейти к сообщению
День добрый. В заголовке теме вообщем-то все указал.
Разбираюсь в PHPExcel. Код:

CODE (htmlphp):
скопировать код в буфер обмена
  1. $my_date = date('d.m.y', time()+60*20);
  2. $objPHPExcel->getActiveSheet()->getStyle('D2')->getNumberFormat()->setFormatCode('DD.MM.YYYY');
  3. $objPHPExcel->getActiveSheet()->SetCellValue('D1', $my_date);


В документе ячейка принимает нужный формат (DD.MM.YYYY), но записывается дата с апострофом в начале ('), т.е. в итоге вместо 27.02.2016 в ячейке '27.02.2016

Уже прочел, что апостроф в начале - принудительное преобразование к строке, но как избваиться - ума не приложу.
Мозг сломал, 3 часа сидел, что только не пробовал, но так и не понял. Обращаюсь за помощью к более опытным товарищам Хорошо

Сижу на open office, сохраняю в xlsx. Что еще добавить, чтобы записана была дата без апострофа?
2. Мелкий - 27 Февраля, 2016 - 10:35:43 - перейти к сообщению
dahujika пишет:
setFormatCode('DD.MM.YYYY')

dahujika пишет:
date('d.m.y'

d.m.Y же. y - это две цифры года.
3. dahujika - 27 Февраля, 2016 - 13:51:45 - перейти к сообщению
Мелкий пишет:
dahujika пишет:
setFormatCode('DD.MM.YYYY')

dahujika пишет:
date('d.m.y'

d.m.Y же. y - это две цифры года.


Да, пусть так. Ща попробовал, результат тот же. Что интересно, такое происходит только если 3 числа и 2 точки (как бы дата). Если ставить число и месяц или месяц с годом, т.е. 2 числа и точка - все ок. Если к строке добавить букву, то тоже не будет апострофа. Если же именно дата такая, то апостроф. Я так и не могу понять даже, где искать решение проблемы то ли в open office и отображении, то ли в php excel.

Пока что спасает поиск .+ и замена на & по всем ячейкам в уже готовом документе, но это не классно - каждый раз заходить и менять руками.
4. dahujika - 28 Февраля, 2016 - 08:53:33 - перейти к сообщению
Решения:
PHP:
скопировать код в буфер обмена
  1. $objPHPExcel->getActiveSheet()->SetCellValue('D1', '=NOW()+0.00001*60*20');

и
PHP:
скопировать код в буфер обмена
  1. $objPHPExcel->getActiveSheet()->SetCellValue('D1', PHPExcel_Shared_Date::PHPToExcel(time()+60*20));

 

Powered by ExBB FM 1.0 RC1