Aspose.cells for Java读取自定义格式的值错误

如图,aspose得到的值和MS office365显示的值不同:
20250318-174129.jpg (90.3 KB)
aspose的结果为:上午0时00分
MS office365的结果为:上午12时00分

aspose-cells版本为24.11

代码如下:

Workbook workbook = new Workbook("date.xlsx");
workbook.getSettings().setRegion(CountryCode.DEFAULT);
workbook.calculateFormula();
for (int i = 0; i < workbook.getWorksheets().getCount(); i++) {
    Worksheet sheet = workbook.getWorksheets().get(i);
    Cells cells = sheet.getCells();
    for (int row = 0; row <= cells.getMaxRow(); row++) {
        for (int col = 0; col <= cells.getMaxColumn(); col++) {
            // 读取单元格内容
            System.out.println("row: " + row + ", col: " + col);
            Cell cell = cells.get(row, col);
            String value = cell.getStringValue();
            System.out.println("Value: " + value);
            // 获取单元格的显示值
            String value_display = cell.getDisplayStringValue();
            System.out.println("ValueDisplay: " + value_display);
            // 获取单元格的样式
            Style style = cell.getStyle();
            System.out.println("Style: " + style.getCustom());
        }
    }
}

对应单元格的输出结果为:

row: 2, col: 0
Value: 上午0时00分
ValueDisplay: 上午0时00分
Style: [DBNum1]上午/下午h"时"mm"分"

可以看到无论是getStringValue还是getDisplayStringValue结果都是错的。

样本:
date.7z (8.3 KB)

@ztthu,

感谢您提供的模板 Excel 文件和屏幕截图。

经过初步测试,我能够使用您的模板 Excel 文件和示例代码片段重现您提到的问题。我发现 Aspose.Cells 获取的值与 MS Office365 显示的值不同。我们已在内部问题跟踪系统中打开以下新工单,并将根据支持政策中提到的条款提供修复。
问题 ID:CELLSJAVA-46322

一旦我们有更新,我们会在这里通知您。

1 Like

@ztthu,

我们很高兴地通知您,您的问题(票号:“CELLSJAVA-46322”)已得到解决。修复将包含在我们计划于 2025 年 4 月上半月发布的即将发布的版本(Aspose.Cells v25.4)中。下一个版本发布时,我们会通知您。

1 Like