我在apache poi 3.12和Java 1.6中使用HSSFWorkbook将.xls文件转换为制表符分隔的文本文件。在我processRecord方法我得到使用FormatTrackingHSSFListener从数量字段的值在NumberRecord,numrec,在下面的代码:Apache POI Java 6到8区别
String value = formatListener.getFormatString(numrec);
这需要一个值,像21.9,并四舍五入到最接近的整数。我的问题是,当我更改为运行Java 1.8的新服务器时,值被截断而不是舍入,因此21.9变为21而不是22.我已经通过了apache的poi文档,并且他们没有提及行为,所以我要求回答以下问题:
- 为什么会发生这种情况? (最不重要)
- 有没有办法在Java 1.8中检索值而不是截断值?
- 有没有一种方法来检索它的原始形式的值没有舍入或截断?
我已经尝试从xls文件所获得的价值的另一种方式:
String value = new DataFormatter().formatCellValue(cell);
,但我得到了相同的行为。
如果您尝试最新版本的Apache POI,目前3.17会发生什么情况? – Gagravarr
大概你已经检查过了,但是你可以确认在java版本中numrec值总是相同的吗?你可以为它编写一个单元测试用例。 – Anon
更新到最新poi(3.17)做了这份工作,谢谢大家 – user3813942