Когда я загружаю файл.xls в PHPExcel, я бы хотел прочитать необработанные данные.
Я прочитал об использовании "getValue()", и он должен исправить это.
Но не в моем случае.
Итак, в.xls у меня есть столбец: 2015-10-08 11:31
Когда я обрабатываю его с помощью PHPExcel, я получил: 42285.47993055556
Из-за того, что PHPExcel сначала читает файл, я не могу использовать PHP для создания объекта DATETIME?!
PHP
for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getValue();
Как я могу это решить?
Бросив принятый ответ, я получил этот код для работы для меня:
for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getValue();
}//close 2nd for loop
//Create and convert xls date to php date
$val[10] = PHPExcel_Shared_Date::ExcelToPHPObject($val[10]);
$val[10] = $val[10]->format('Y-m-d H:i:s');
//query stuff...
}//close first for loop
Нет PHPExcel не меняет его... это уже номер
MS Excel хранит даты/время как сериализованную временную метку, основанную на количестве дней с 1 января 1900 года (или 1 января 1904 года, если используется календарь Mac).... это значение 42285.47993055556
- это временная метка Excel, соответствующая 2015-10-08 11:31:06
. Ячейка, в которой хранится это значение, имеет код номера, который преобразует его в человеческое представление этой даты/времени. Если вы измените эту маску, она изменит видимый внешний вид значения, но базовое сериализованное значение останется неизменным.
Если вы это сделаете
$val[] = $cell->getFormattedValue();
то PHPExcel применит маску формата номера к этой сериализованной дате/временной отметке и вернет строку, содержащую человекочитаемый формат этой даты, на основе маски, которая была сохранена в файле Excel.
Если вы это сделаете
$val[] = PHPExcel_Shared_Date::ExcelToPHP($cell->getValue());
то PHPExcel вернет временную метку unix, которую вы можете передать функции PHP date()
для форматирования, но вы хотите
Если вы это сделаете
$val[] = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getValue());
то PHPExcel вернет объект PHP DateTime, который затем можно форматировать, но вы хотите использовать метод DateTime object format()