我有一个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对象方法)自己格式化它们。