Java 读取Excel百分数保留原格式(即不转换为小数)的方法
我们在用Java使用poi读取Excel时,或许会遇到百分数,然而poi自动将百分数转换为了小数,如果小数是以0开头的还可能被删除了起始的0,变成了.**,虽然数值大小没变,但是直观展示变了,对于不懂开发只关注结果的领导来说难免产生误解,这一误解就是100倍的,所以大多数时候需要我们将百分号%保留,那么下面就记录一种本人总结的方式:
if(cell != null) {
String cellStr = ""; String formatType = cell.getCellStyle().getDataFormatString(); // 如果是百分数,类型结果可能为 0%(保留整数) 或 0.00%(保留2位小数); if (formatType.indexOf("%") != -1) {// 判断如果含百分号,则认为百分数类型 // System.out.println(cols.get(j) + "数据类型:" + formatType ); int baifenshuxiaoshuwei = 0; if(formatType.indexOf(".")!=-1) { // 判断包含小数点 baifenshuxiaoshuwei = formatType.substring(formatType.indexOf("."), formatType.indexOf("%")).length()-1; // 获取小数位数 cellStr = "#."; for(int weishu=0;weishu<baifenshuxiaoshuwei;weishu++) { cellStr += "0"; } cellStr = new DecimalFormat(cellStr).format(cell.getNumericCellValue()*100) + "%"; // 保留对应位数百分号 if(cellStr.startsWith(".")) {// 如果以.开头的,前面加0拼接; cellStr = "0" + cellStr; } } else { // 不含小数点,直接四舍五入整数; cellStr = Math.round(cell.getNumericCellValue()*100)+"%"; } //System.out.println(cellStr); }else {// 普通类型 cellStr = ExcelUtil.getCellStringValue(cell); // 自定义的读取其它格式数据的函数 } }
更多方式欢迎评论区补充~~