apache.poi HSSFCell getNumericCellValue读取错误

时间:2017-11-13 14:12:15

标签: java excel apache-poi hssf

我使用apache.poi从excel读取数值。

hssfCell.getNumericCellValue()

但是这里是结果错误的excel文件的例子。

Example of excel file

单元格N14的正确结果是11,115(或Excel格式的11,12)。但是hssfCell.getNumericCellValue()得到结果11.114999999999998。

这是公式单元格,所以我可以使用dateFormatter,结果是11,11。

HSSFWorkbook wb = new HSSFWorkbook(new ByteArrayInputStream(importFile));
FormulaEvaluator formulaEvaluator = new HSSFFormulaEvaluator(wb);
DataFormatter dataFormatter = new DataFormatter();
formulaEvaluator.evaluate(hssfCell);
dataFormatter.formatCellValue(hssfCell, formulaEvaluator);

Excel显示我11,12。我怎样才能获得这个价值?

1 个答案:

答案 0 :(得分:0)

你可以用这个:

DecimalFormat decimalFormat = new DecimalFormat("#.##");
decimalFormat.setRoundingMode(RoundingMode.CEILING);      
decimalFormat.format(hssfCell.getNumericCellValue());

问题是精度是硬编码。如果您只使用2位小数,此解决方案将正常工作。