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

2022-08-30 16:51:22

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

// 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


答案 1

该值是自 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);

答案 2

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

使用时getValue()

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

使用时getFormattedValue()

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

推荐