我有一個xlsx文件,我正在用apache poi 3.17閱讀java 6.在一個實例中,我有一個值爲123456789011的單元格。這個單元格作爲NUMERIC CellTypeEnum單元格讀入java。當我使用DataFormatter獲得細胞的這樣的值:Apache POI DataFormatter返回科學表示法
DataFormatter formatter = new DataFormatter(Locale.US); String strVal = formatter.formatCellValue(cell);
字符串值出來爲「1.234567 + 11」。我需要單元格中的實際值爲「123456789011」。我怎麼弄到的?
我已經嘗試在Java中使用BigDecimal來轉換字符串,但返回「123456700000」,因爲這是對給定信息可以做的最好的;這意味着我需要從實際的單元格對象中獲取正確的值。我也嘗試過使用cell.getNumericCellValue(),但是它返回一個double,它的極限太小而無法處理原始值,所以它被檢索爲「1.234567E11」,它與其他檢索方法有相同的問題。
是否有辦法從原始單元格中獲取值作爲字符串,因爲它是在xlsx中輸入的?我對原始的xlsx沒有權力。
謝謝。
爲什麼不使用Cell.getNumericCellValue()?它應該返回實際值作爲double而不應用任何格式。 – centic
這就是問題centic – user3813942
嘗試看看這裏https://stackoverflow.com/questions/16098046/how-to-print-double-value-without-scientific-notation-using-java – matrix