从php中的excel获取日期时出错


Error with getting date from excel in php

我有一个excel文档,它有一个date列,包含像1-Dec-13这样的值,但是,当我通过PHPExcel读取此文件时,我得到的是float(41609)。那么,你知道如何将41609年的日期恢复到合适的日期吗?或者,为什么首先是41609?

我要在excel中阅读的代码:

$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$rdata = $objReader->load($inputFileName);
$rdata = $rdata->getActiveSheet()->toArray(null,true,true,true);

您的问题是:

$objReader->setReadDataOnly(true);

MS Excel日期/时间序列化值是一个浮点数,仅通过应用于单元格的数字格式掩码标识为日期或时间。在将readDataOnly设置为true时,您告诉PHPExcel只读取原始数据,而不读取任何格式化信息,如数字格式掩码,因此PHPExcel不知道单元格是否包含应解释为日期/时间的浮点值,或者只是一个浮点值。

删除该行,或使用

$objReader->setReadDataOnly(false);

相反;PHPExcel将为您处理日期和时间。

否则,您需要自己显式地识别哪些单元格包含日期和时间,并使用PHPExcel_Shared_Date中的helper方法手动将值转换为Unix时间戳或PHP DateTime对象,然后使用标准的PHP日期函数(或DateTime对象方法)自己格式化它们。