我需要使用1904 calendar(而不是JXL)将日期系统更改为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年日期格式的参数值false
到true
。
在私人方法DateRecord.calculateValue(boolean)
你必须改变线
value = utcDays + utcOffsetDays;
用一种不同的常数替换utcOffsetDays
的方式,用1904年日期格式减去四年的天数。
可能有更多的地方需要更改(特别是在使用1904格式作为工作簿属性的漂亮解决方案时),但这与我的程序有关。在出售您的计划时也要注意LGPL的义务。
2)更简单的解决方案:将总时间值放入单元格并将符号存储在单元格格式中。例如,使用格式"[h]:mm:ss"
作为正值,"-[h]:mm:ss"
作为负值。
解决方案的缺点2):认为看起来很完美,单元格中存在正值,这意味着负面,并且在进行计算时结果可能是错误的。