我使用PHPExcle导入excel文件。我发现我无法从计算的单元格中获得正确的值。
该单元格中的计算值为8月27日
(中文日期),英文为27 August
。
单元格引用Sheet2中的A1,而Sheet2中的A1引用另一个excel文件中的单元格。
我已经尝试过以下方法:
echo $cell->getValue(); // =Sheet2!A2
echo $cell->__toString(); // =Sheet2!A2
echo $cell->getCalculatedValue(); // #REF!
echo $cell->getFormattedValue(); // #REF!
echo $cell->getOldCalculatedValue(); // 41878 (a strange result, I don't know what it means)
如何在PHPExcel中获取正确的值(8月27日
)?
答案 0 :(得分:3)
从41878
调用获得的getOldCalculatedValue();
结果是MS Excel序列化日期/时间戳。
在MS Excel中,日期或时间值测量为自1900年1月1日(或1904年1月1日,如果使用Mac 1904日历)以来的天数,并暗示存储为数字。它只是将其呈现为日期和/或时间的单元格的数字格式掩码
41878
是与普通Windows 1900日历中2014年8月27日相对应的数字。
PHPExcel具有内置函数,可将MS Excel序列化日期/时间戳转换为unix时间戳或PHP DateTime对象
$unixTimeStamp = PHPExcel_Shared_Date::ExcelToPHP($cell->getOldCalculatedValue());
然后使用普通的PHP日期函数进行格式化
或者您可以使用
$dateTimeObject = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getOldCalculatedValue());
并使用普通的PHP DateTime对象方法对其进行格式化