gpt4 book ai didi

excel - ods 和 xls 中的 PHPSpreadsheet 不正确的日期格式代码

转载 作者:行者123 更新时间:2023-12-04 19:50:48 25 4
gpt4 key购买 nike

我正在尝试使用 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 的限制。

最佳答案

在 PHPSpreadsheet 的当前版本 1.10.1 中,该错误仅针对 XLS 得到修复,但未针对 ODS 得到修复!

在 Reader/Ods.php 中总是设置 NumberFormat::FORMAT_DATE_XLSX15 库实际上缺少对 ODS 文件中指定的日期格式的正确检测。

关于excel - ods 和 xls 中的 PHPSpreadsheet 不正确的日期格式代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51284109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com