如何使用 PhpSpreadsheet 从表格单元格中检索日期?

新手上路,请多包涵

我有 xlsx 表,我使用 PhpSpreadsheet 来解析它们。一些单元格被格式化为日期。问题是 PhpSpreadsheet 以未指定的格式从日期格式的单元格中返回值:

 // What it looks in excel: 2017.04.08 0:00
$value = $worksheet->getCell('A1')->getValue();  // 42833 - doesn't look like a UNIX time

如何以 UNIX 时间或 DateTimeInterface 实例的形式从单元格获取日期?

原文由 Finesse 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

该值是自 1900 年以来经过的天数。您可以使用 PhpSpreadsheet 内置函数将其转换为 unix 时间戳:

 $value = $worksheet->getCell('A1')->getValue();
$date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value);

或者一个 PHP DateTime 对象:

 $value = $worksheet->getCell('A1')->getValue();
$date = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($value);

原文由 Finesse 发布,翻译遵循 CC BY-SA 3.0 许可协议

当我们迭代 $row->getCellIterator() 或者我们可能有其他类型的值时,使用 getFormattedValue 可能会有用

使用时 getValue()

  • 全名:Jane Doe => “Jane Doe”
  • 出生日期:11/18/2000 => 36848.0

使用时 getFormattedValue()

  • 全名:Jane Doe => “Jane Doe”
  • 出生日期:11/18/2000 => “11/18/2000”

原文由 Jay 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏