我有一个带有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);
答案 0 :(得分:2)
你的问题是:
$objReader->setReadDataOnly(true);
MS Excel日期/时间序列化值是一个浮点数,仅通过应用于单元格的数字格式掩码标识为日期或时间。在将readDataOnly设置为true时,您告诉PHPExcel只读取原始数据,而不是读取任何格式信息(如数字格式掩码),因此PHPExcel不知道单元格是否包含应该被解释为日期的浮点数/时间或只是一个浮动。
删除该行,或使用
$objReader->setReadDataOnly(false);
代替;和PHPExcel将为您处理日期和时间。
否则,您需要自己明确标识哪些单元格包含日期和时间,并使用PHPExcel_Shared_Date中的辅助方法手动将值转换为Unix时间戳或PHP DateTime对象,然后使用标准PHP日期函数(或DateTime对象方法)自己格式化