使用 POI 3.15 读取 Excel 数据, 如果单元格的值是带百分号的数值, 获取到的值默认是被转换后的小数, 例如"55.6%"会被转换为"0.556", "0.1298%"被转换为"0.001298"
如果想保留原格式的话, 需要获取单元格的格式, 对带有百分号的做处理, 同时要注意浮点数精度问题, 下面是参考代码
// 获取格式判断
if(cell.getCellStyle().getDataFormatString().indexOf("%") > -1) {
double num = cell.getNumericCellValue();
String str = String.valueOf(num);
int dg = str.length() - str.indexOf(".") - 1 - 2;
num = num * 100;
BigDecimal numberBigDecimal = new BigDecimal(num);
numberBigDecimal = dg > -1 ? numberBigDecimal .setScale(dg, BigDecimal.ROUND_HALF_UP) : numberBigDecimal;
cellVal = numberBigDecimal + "%";
} else {
cell.setCellType(CellType.NUMERIC);
BigDecimal bd = new BigDecimal(Double.toString(cell.getNumericCellValue()));
cellVal = bd.toPlainString().replaceAll("\\.0+$", "");
}