【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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM