[英]Apache POI Java 6 to 8 Difference
我在Java 1.6的Apache Poi 3.12中使用HSSFWorkbook,將.xls文件轉換為制表符分隔的文本文件。 在我的processRecord方法中,通過以下代碼,使用NumberRecord numrec上的FormatTrackingHSSFListener從數字字段中獲取值:
String value = formatListener.getFormatString(numrec);
它采用一個值,例如21.9,並將其舍入到最接近的整數。 我的問題是,當我更改為運行Java 1.8的新服務器時,該值被截斷而不是四舍五入,因此21.9變為21而不是22。我查看了apache的poi文檔,他們沒有提到行為,因此我要求回答以下問題:
我已經嘗試了另一種從xls文件獲取值的方法:
String value = new DataFormatter().formatCellValue(cell);
但我得到相同的行為。
我沒有Java 8,但是使用Java 7和以下apache poi庫,我沒有問題(我認為問題在於apache poi版本)。
public static void main(String[] args) {
try {
FileInputStream is = new FileInputStream(new File("C:\\ook.xls"));
HSSFWorkbook wb = new HSSFWorkbook(is);
HSSFSheet sheet = wb.getSheet("Sheet1");
Row row = sheet.getRow(0);
Cell cell = row.getCell(0);
System.out.println(cell.getNumericCellValue());//returns a double value so its ok
} catch (IOException e) {
e.printStackTrace();
}
finally{
}
}
Apache poi庫:
結果:
Excel文件:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.