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

时间:2013-12-04 07:31:00

标签: php phpexcel

我有一个带有date列的excel文档,其中包含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);

1 个答案:

答案 0 :(得分:2)

你的问题是:

$objReader->setReadDataOnly(true);

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

删除该行,或使用

$objReader->setReadDataOnly(false);

代替;和PHPExcel将为您处理日期和时间。

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