JXL(Java)更改为1904日期系统

问题描述 投票:2回答:1

我需要使用1904 calendar(而不是JXL)将日期系统更改为1900 calendar

每次我使用JXL API在Excel中写东西时,日期系统都设置为默认值,我需要更改日期系统。

当我写负时间值(例如-0:55)时,我得到################而不是-0:55。

在Excel中将日期系统更改为1904后################更改为-0:55。

有没有办法在JXL中自动更改?

java excel date jxl
1个回答
2
投票

jxl的实际版本不能这样做。我有同样的问题,我只是做了一些jxl的调试。 Jxl正确读取1904日期格式的记录,但它没有写入。它总是将1900日期格式写为常量。

我看到以下解决方案:

1)更改jxl库,使其可以编写1904日期格式。那不应该那么困难。在方法WritableWorkbookImpl.write()你必须改变行

    NineteenFourRecord nf = new NineteenFourRecord(false);

1904年日期格式的参数值falsetrue

在私人方法DateRecord.calculateValue(boolean)你必须改变线

    value = utcDays + utcOffsetDays;

用一种不同的常数替换utcOffsetDays的方式,用1904年日期格式减去四年的天数。

可能有更多的地方需要更改(特别是在使用1904格式作为工作簿属性的漂亮解决方案时),但这与我的程序有关。在出售您的计划时也要注意LGPL的义务。

2)更简单的解决方案:将总时间值放入单元格并将符号存储在单元格格式中。例如,使用格式"[h]:mm:ss"作为正值,"-[h]:mm:ss"作为负值。

解决方案的缺点2):认为看起来很完美,单元格中存在正值,这意味着负面,并且在进行计算时结果可能是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.