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

时间:2018-11-08 14:14:18

标签: java excel date jxl

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

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

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

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

在JXL中可以自动更改吗?

1 个答案:

答案 0 :(得分:2)

jxl的实际版本无法做到这一点。我有同样的问题,我只是对jxl进行了调试。 Jxl正确读取1904年日期格式的记录,但未写入。始终将1900日期格式写为常量。

我看到以下解决方案:

1)更改jxl库,以便它可以写入1904年日期格式。那应该没有那么困难。在方法wmqJms中,您必须在行中进行更改

WritableWorkbookImpl.write()

1904年日期格式的参数值 NineteenFourRecord nf = new NineteenFourRecord(false); false

在私有方法true中,您必须更改行

DateRecord.calculateValue(boolean)

以一种不同的常量替换 value = utcDays + utcOffsetDays; ,方法是使用1904年日期格式的四年的天数少。

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

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

解决方案2)的缺点:思想看起来很完美,单元格中有一个 正值,表示负数,计算时结果可能是错误的。