我正在使用PHPExcel库来读取电子表格数据。这个库让我无法阅读'DATE'值。
问题: 即使'setReadDataOnly'设置为'false',如何指示PHPExcel正确读取'DATE'值?
说明
PHPExcel版本:2.1,环境:Ubuntu 12
以下是代码块:
$objReader = \PhpExcel\PHPExcel_IOFactory::createReaderForFile($spreadSheetFullFilePathString);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($spreadSheetFullFilePathString);
$objWorksheetObject = $objPHPExcel->getActiveSheet();
默认情况下,“DATE”列值会显示“整数”值。
我发现,'$ objReader-> setReadDataOnly(true)'这一行造成了麻烦。 因此,将其更改为'$ objReader-> setReadDataOnly(false)'。
我在此更改后正确获取Date列值。但现在读者正在阅读excel中的所有ROWS + COLUMNS。
非常感谢任何帮助。
答案 0 :(得分:1)
如果$objReader->setReadDataOnly(true);
,那么唯一可以识别日期的读者就是Gunumeric阅读器。日期值只能通过数字格式掩码来标识,而setReadDataOnly(true)
告诉读者不要读取格式,因此以后不能识别日期(Gnumeric是例外,因为它是在发现问题后写的,但是,无论setReadDataOnly
值是什么,其他读者都没有被修改过来读取这些信息。如果你需要确定日期,那么此时唯一的选择就是$objReader->setReadDataOnly(false);
但是,对于日期单元格,您不应该获得整数值;你应该得到一个浮点数:它是标识Excel datetime序列化值的时间部分的小数。
如果您知道哪些单元格包含日期,则可以使用PHPExcel_Shared_DateTime类中定义的辅助函数将它们转换为unix时间戳或PHPExcel DateTime对象(然后可以使用所有标准的PHP日期处理函数)。
你说读者正在阅读ALL the ROWS + COLUMNS found in the excel
:无论setReadDataOnly
值如何,都应该这样做。如果您不想读取所有行和列,则需要设置读取过滤器。