Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JXL(Java)更改为1904日期系统_Java_Excel_Date_Jxl - Fatal编程技术网

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

JXL(Java)更改为1904日期系统,java,excel,date,jxl,Java,Excel,Date,Jxl,我需要将日期系统更改为使用(而不是) 每次我使用JXLAPI写东西时,日期系统都设置为默认值,我需要更改日期系统 当我写负时间值(例如-0:55)时,我得到的是##########而不是-0:55 在Excel中将日期系统更改为1904后,更改为-0:55 有没有办法在JXL中自动更改此设置?JXL的实际版本无法做到这一点。我也有同样的问题,我只是对jxl做了一些调试。Jxl正确读取1904年日期格式的记录,但不会写入它。它总是将1900年日期格式作为常量写入 我看到以下解决方案: 1) 更改j

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

每次我使用JXLAPI写东西时,日期系统都设置为默认值,我需要更改日期系统

当我写负时间值(例如-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(布尔值)
中,必须更改行

    value = utcDays + utcOffsetDays;
在某种程度上,用一个不同的常数替换
utcOffsetDays
,对于1904年的日期格式,天数减少四年

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

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

解决方案2的缺点):虽然看起来很完美,但单元格中有一个正值,这意味着负值,在进行计算时,结果可能是错误的