0

我正在使用 PHPExcel 库来读取电子表格数据。这个库让我在阅读“日期”值时遇到了麻烦。

问题: 即使'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();

默认情况下,我正在获取“日期”列值的“整数”值。

我发现,'$objReader->setReadDataOnly(true)' 行引起了麻烦。因此,将其更改为“$objReader->setReadDataOnly(false)”。

在此更改后,我正确获取了 Date 列值。但现在读者正在阅读 excel 中的所有 ROWS + COLUMNS。

任何帮助将不胜感激。

4

1 回答 1

1

如果$objReader->setReadDataOnly(true);,则唯一可以识别日期的阅读器是 Gunumeric 阅读器。日期值只能通过数字格式掩码来识别,并setReadDataOnly(true)告诉Reader不要读取格式,因此后续无法识别日期(Gnumeric是例外,因为它是在识别出问题之后写入的,但其他都没有阅读器尚未修改为无论setReadDataOnly值如何都可以读取此信息。如果您需要识别日期,那么此时唯一的选择是$objReader->setReadDataOnly(false);

但是,对于日期单元格,您不应获得整数值;你应该得到一个浮点数:它是标识 Excel 日期时间序列化值的时间部分的小数。

如果您知道哪些单元格包含日期,那么您可以使用 PHPExcel_Shared_DateTime 类中定义的帮助函数将它们转换为 unix 时间戳或 PHPExcel DateTime 对象(然后可以使用所有标准的 PHP 日期处理函数)。

你说读者现在正在阅读ALL the ROWS + COLUMNS found in the excel:它应该,无论setReadDataOnly价值如何。如果您不想读取所有行和列,则需要设置读取过滤器。

于 2013-07-24T21:57:54.877 回答