2013-07-24 77 views
0

我使用PHPExcel图书馆阅读电子表格数据。这个图书馆给我阅读'DATE'值带来麻烦。PHPExcel - 读日期值

问: 如何指示PHPExcel正确读取“日期”值,即使“setReadDataOnly”设置为“假”?

描述:

PHPExcel版本:2.1,环境:Ubuntu的12

下面是代码块:

$objReader = \PhpExcel\PHPExcel_IOFactory::createReaderForFile($spreadSheetFullFilePathString); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($spreadSheetFullFilePathString); 
$objWorksheetObject = $objPHPExcel->getActiveSheet(); 

我得到的 '日期' '整数' 值列默认值。

我发现,行 '$ objReader-> setReadDataOnly(真)' 造成的麻烦。 因此,将其更改为'$ objReader-> setReadDataOnly(false)'。

我这个更改后正确地获取日期列的值。但是现在读者正在阅读excel中的所有ROWS + COLUMNS列。

任何帮助将不胜感激。

+0

什么版本的PHPExcel? 1.7.9是最新的产品发布;而且我仍在致力于2.0.0版本的发布 –

回答

1

如果$objReader->setReadDataOnly(true);,则可以识别日期唯一的读者是Gunumeric读者。日期值只能由数字格式掩码进行识别,并setReadDataOnly(true)告诉读者不读的格式,所以日期以后不能被识别(Gnumeric的是个例外,因为这个问题被确认后,这是写的,但没有的如果您需要确定日期,那么此时唯一的选项是$objReader->setReadDataOnly(false);

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

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

你说读者现在正在读ALL the ROWS + COLUMNS found in the excel:它应该,不管setReadDataOnly的值。如果你不想读取所有的行和列,那么你需要设置一个读取过滤器。