【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

 

posted @ 2019-12-31 11:45  Angel挤一挤  阅读(3541)  评论(0编辑  收藏  举报