JXL(Java) 改为1904日期系统

JXL(Java) change to 1904 date system

我需要将日期系统更改为 1904 calendar using JXL (rather than 1900 calendar)。

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

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

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

有什么方法可以在 JXL 中自动更改它吗?

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 的缺点):想法看起来很完美,单元格中的正值,这意味着负值,并且在计算时结果可能是错误的。