我正在尝试使用 PHPSpreadsheet 读取电子表格文档,我在读取表格中的日期时遇到问题,我想以格式读取它们,日期为 YYYY-MM-DD 格式,使用单元格编号格式,当我保存时ods 和 xls 格式的工作表我得到不正确的日期格式,当我以 xlsx 格式保存工作表时,日期格式是正确的,下面是我用来阅读电子表格的代码
$PHPSpreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file);
foreach ($PHPSpreadsheet->getWorksheetIterator() as $worksheet) {
foreach ($worksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false); // Loop all cells, even if it is not set
foreach ($cellIterator as $cell) {
if (!is_null($cell)) {
if (\PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) {
echo $cell->getStyle()->getNumberFormat()->getFormatCode();
echo '<br>';
echo $cell->getValue();
echo '<br>';
echo $cell->getCalculatedValue();
echo '<br>';
echo $cell->getFormattedValue();
echo '<br>';
}
}
}
}
}
这是我分别为 xlsx、ods、xls 得到的输出
YYYY\-MM\-DD
43196
43196
2018-04-06
d-mmm-yy h:mm:ss
43196.041666667
43196.041666667
6-Apr-18 1:00:00
d-mmm-yy h:mm:ss
43196.041666667
43196.041666667
6-Apr-18 1:00:00
以 xlsx 格式保存时得到的输出是工作表中的正确格式,ods 是我将使用最多的格式,我做错了什么还是 PHPSpreadsheet 的限制。