8

当我使用该类在我的 php 代码中读取 excel 文件时,我遇到了 PHPExcel 类的问题。

// Reading the excel data
$objReader = new PHPExcel_Reader_Excel2007();
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load('test.xlsx');
$objPHPExcel->setActiveSheetIndex(0);
$dataArray = $objPHPExcel->getActiveSheet()->toArray();

我正在使用这段代码,现在的问题是当我创建一个 excel 文件并插入一个单元格值时,比如日期 01/09/2012

并使用 PHPExcel 类的 toarray() 函数读取完整的 excelsheet,然后它不返回日期值。它返回一个数值。

我发现当我们使用 MS OFFice 应用程序创建 Excel 文件并将日期插入任何单元格时,excel 会将单元格转换为日期格式。所以现在我想使用 PHPExcel 类读取日期格式单元格。

4

1 回答 1

10

规则一:

设置 $objReader->setReadDataOnly(true); 不是一个好主意;你什么时候处理日期。如果你这样做,那么 PHPExcel 将无法告诉你单元格是否包含日期或数字。

规则二:

该数字是 Excel 存储的 Excel 日期值。Excel numberFormat Mask 然后用于在显示时将该数字转换为格式化的“人类可读”日期。(如果您使用了 $objReader->setReadDataOnly(true); 那么您还没有加载单元格的 numberFormat 掩码。如果您已经加载了 numberFormat 掩码,那么您可以使用 getFormattedValue() 方法返回格式化的“human -可读”日期作为字符串。

规则三:

要将 Excel 数字日期值转换为 unix 日期/时间戳或 PHP DateTime 对象,您可以使用内置的 PHPExcel_Shared_Date::ExcelToPHP() 或 PHPExcel_Shared_Date::ExcelToPHPObject() 方法。

规则四:

所有这些都有完整的记录。但我想我将不得不写一本专门用于日期的特殊手册,文件名中用大红色字母表示日期。

于 2012-09-12T20:02:44.307 回答