我需要使用1904 calendar(而不是JXL)将日期系统更改为1900 calendar。
每次我都使用JXL API在Excel中写东西时,日期系统设置为默认值,我需要更改日期系统。
当我写负时间值(例如-0:55)时,我得到的是################而不是-0:55。
在Excel中将日期系统更改为1904后,################更改为-0:55。
在JXL中可以自动更改吗?
答案 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)的缺点:思想看起来很完美,单元格中有一个 正值,表示负数,计算时结果可能是错误的。