Как запиcать даты в .xlsx через PHPExcel?

День добрый. Код:

$my_date = date('d.m.Y', time()+60*20);
$objPHPExcel->getActiveSheet()->getStyle('D2')->getNumberFormat()->setFormatCode('DD.MM.YYYY');
$objPHPExcel->getActiveSheet()->SetCellValue('D1', $my_date);

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

Уже прочел, что апостроф в начале - принудительное преобразование к строке, но как избваиться - ума не приложу.
Мозг сломал, 3 часа сидел, что только не пробовал, но так и не понял. Обращаюсь за помощью к более опытным товарищам.
Сижу на open office, сохраняю в xlsx. Что еще добавить, чтобы записана была дата без апострофа?
  • Вопрос задан
  • 1542 просмотра
Решения вопроса 2
@OVK2015
$xls = PHPExcel_IOFactory::load("test.xlsx");
	$xls->setActiveSheetIndex(0);
	$sheet = $xls->getActiveSheet();
	
	for($counter = 0; $counter < 10; $counter++)
	{
		$currentCellDate = date('d.m.Y', strtotime('+'.($counter).' day'));
		echo $currentCellDate."\n";
		$xls->getActiveSheet()->setCellValueByColumnAndRow(0, $counter + 1, $currentCellDate);
	}

	$objWriter = PHPExcel_IOFactory::createWriter($xls, 'Excel2007');
	$objWriter->save("test.xlsx")


В Excel в столбце 'B' ф-ция:
=ТЕКСТ(ДЕНЬНЕД(A1;1);"ДДДД")

Результат:
905eb60c889643b69832c4494354a9e2.jpg
Ответ написан
@dahujika Автор вопроса
Итак, проблема решена. Есть 2 способа:

$objPHPExcel->getActiveSheet()->SetCellValue('D1', '=NOW()+0.00001*60*20');

и
$objPHPExcel->getActiveSheet()->SetCellValue('D1', PHPExcel_Shared_Date::PHPToExcel(time()+60*20));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы