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