问题:

单元格内文本应该是这样:

 

 实际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

 

查看原文