获得PHPExcel计算的日期细胞(get calculated date cell in PHPE

2019-10-20 20:25发布

我用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)

我怎样才能得到正确的值( 8月27日在PHPExcel)?

Answer 1:

41878的结果,你从调用get getOldCalculatedValue(); 是MS Excel的序列化的日期/时间戳。

在MS Excel,日期或时间值(如果使用Mac 1904日历或1904年1月1日)作为自1900年1月1日的天数测量并暗示存储为一个数字。 这是只为呈现它作为一个日期和/或时间的单元格中的数字格式掩码

41878是对应于2014年8月27日在正常的Windows 1900日历数。

PHPExcel具有内置函数来转换MS Excel的序列化的日期/时间戳,以任一个Unix时间戳或PHP DateTime对象

$unixTimeStamp = PHPExcel_Shared_Date::ExcelToPHP($cell->getOldCalculatedValue());

然后用普通的PHP日期函数将其格式化

或者您可以使用

$dateTimeObject = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getOldCalculatedValue());

和正常使用PHP的DateTime对象的方法对其进行格式化



文章来源: get calculated date cell in PHPExcel