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

标签 excel date format spreadsheet phpspreadsheet

我正在尝试使用 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/

相关文章:

excel - 选择或复制三个不相邻的单元格 3

excel - 何时应使用 xlsm 或 xlsb 格式?

linux - 按 [M]M/[D]D/YYYY 对大文件排序

r - 在R中生成月份最后一天的日期序列

javascript - AngularUI DatePicker - JavaScript - 获取 SQL 日期格式时休息一天

python - 如何在Python2中嵌套格式字符串?

excel - 我可以添加电子表格行然后格式化吗?

excel - Workbook.Worksheets.Columns() 使用数字而不是字符串?

python - 格式化 HTML 标签

随单元格值变化的字符串?