1

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

hssfCell.getNumericCellValue()

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

excel文件示例

单元格 N14 的正确结果是 11,115(或 11,12,使用 excel 格式)。但是 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。我怎样才能得到这个值?

4

1 回答 1

0

你可以使用这个:

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

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

于 2017-11-19T17:28:39.120 回答