PHPEXCEL получает форматированную дату, как видно в файле Excel
Я пытаюсь импортировать файл Excel, используя PhpExcel lib для всех других полейgetValue()
функция работает, но когда она встречает поле с форматом даты, установленным в ms-excel2013, поле даты в exel-файле имеет формат d-m-Y, например16-11-2014
но когда я пытаюсь импортировать это значениеgetValue()
возвращается11-16-14
который при переходе кstrtotime
в дальнейшемreturns false
в свою очередь, вызываяdate('Y-m-d',strtotime($date))
возвращать1970-01-01
.
Я искал всю сеть и stackoverflow, но ни одно решение не решило мою проблему. В файле Excel я вижу дату как16-11-2014
и хотите, чтобы он был импортирован как есть.
Вот код
protected function importExcel($filePath) {
$excelData = array();
if ($filePath) {
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
$objPHPExcel->setReadDataOnly(true);
foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) {
$worksheetTitle = $worksheet->getTitle();
$highestRow = $worksheet->getHighestRow(); // e.g. 10
$highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
$data = array();
for ($row = 1; $row <= $highestRow; ++$row) {
$values = array();
for ($col = 0; $col < $highestColumnIndex; ++$col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
if (PHPExcel_Shared_Date::isDateTime($cell))
throw new Exception("is date time"); // just a check
$val = $cell->getValue();
if (isset($val) && $val)
$data[$row][$col] = $val;
}
}
$excelData[$worksheetTitle] = $data;
}
return $excelData;
}
return FALSE;
}