【POI】POI读取xlsx单元格内小数精度问题
问题:
单元格内文本应该是这样:
实际POI读取到的内容是这样:
而且,有的读取正常,有的读取不正常。
即使设置xlsx单元格的格式,也没有作用
解决方法:
if (cell.getCellType() == CellType.NUMERIC) { return String.valueOf(new BigDecimal(cell.getNumericCellValue()).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()); //四舍五入去两位【枚举可自由替换】
}
更稳妥的方法:
if (cell.getCellType() == CellType.NUMERIC) { cell.setCellType(CellType.STRING);//先重置单元格格式 return String.valueOf(new BigDecimal(cell.getStringCellValue()).setScale(2, BigDecimal.ROUND_DOWN).doubleValue());//再 直接截取两位【枚举可自由替换】 }
扩展:
BigDecimal.setScale用法总结
https://www.cnblogs.com/sxdcgaq8080/p/12123917.html