【问题标题】:JXL(Java) change to 1904 date systemJXL(Java) 更改为 1904 日期系统
【发布时间】:2019-04-12 01:37:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java excel date jxl


    【解决方案1】:

    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)的缺点:认为看起来很完美,单元格中有一个表示负数的正值,并且在进行计算时结果可能是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      相关资源
      最近更新 更多