Как получить дату из ячейки таблицы, используя PhpSpreadsheet?

я имею xlsx таблицы и я использую PhpSpreadsheet для их анализа. В некоторых ячейках формат даты. Проблема в том, что PhpSpreadsheet возвращает значения из ячеек с форматированием даты в неопределенном формате:

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

Как получить дату из ячейки в виде времени UNIX или DateTimeInterface пример?

5

Решение

Значение — это количество дней, прошедших с 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);
14

Другие решения

Когда мы итерируем с $row->getCellIterator() или у нас могут быть другие виды стоимости, это может быть полезно использовать GetFormattedValue вместо

при использовании getValue()

  • Полное имя: Джейн Доу => «Джейн Доу»
  • ДОБ: 18.11.2000 => 36848.0

при использовании getFormattedValue()

  • Полное имя: Джейн Доу => «Джейн Доу»
  • DOB: 18.11.2000 => «18.11.2000»
0

По вопросам рекламы [email protected]