我使用apache.poi从excel读取数值。
hssfCell.getNumericCellValue()
但是这里是结果错误的excel文件的例子。
单元格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。我怎样才能获得这个价值?
答案 0 :(得分:0)
你可以用这个:
DecimalFormat decimalFormat = new DecimalFormat("#.##");
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.format(hssfCell.getNumericCellValue());
问题是精度是硬编码。如果您只使用2位小数,此解决方案将正常工作。