获取PHPExcel中的计算日期单元格

时间:2014-08-30 08:56:23

标签: datetime phpexcel datetime-format

我使用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日)?

1 个答案:

答案 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对象方法对其进行格式化