A getValue()
вызов в поле, содержащее дату, должен возвращать значение, подобное 41959 .... то есть сериализованную отметку даты и времени MS Excel, основанную на количестве дней с 1 января 1900 года (или 1 января 1904 года, если файл был создан с использованием версии MS Excel для Mac), и (по умолчанию) rangeToArray()
использует вызов getValue()
.
Чтобы получить отформатированную строку даты, вам нужно вместо этого вызвать getFormattedValue()
; PHPExcel затем использует маску числового формата для этой ячейки, чтобы отформатировать дату в соответствии с этой маской. Вы можете установить rangeToArray()
, чтобы сделать это для вас, установив для аргумента $formatData
значение true.
$rowData = $sheet->rangeToArray('A'.$row.':'.$highestColumn.$row, Null, TRUE, TRUE);
Это отформатирует все ячейки так, как они отображаются в электронной таблице в самом Excel.
В качестве альтернативы, PHPExcel предоставляет функции для преобразования значений даты между метками времени Excel и метками времени unix или объектами PHP DateTime, и вы можете использовать их вместо:
$profile->birth_date = PHPExcel_Shared_Date::ExcelToPHPObject($rowData[0][2])
->format('Y-m-d');