PHPExcel问题,用于从excel文件中读取日期字段

时间:2012-09-12 18:20:49

标签: php phpexcel

当我使用该类在我的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类读取日期格式单元格。

1 个答案:

答案 0 :(得分:10)

规则一:

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

规则二:

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

规则三:

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

规则四:

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