我有一个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