java解析excel
/** * insertSave导入数据处理,数据转成Map<Integer, Object>,放在List<Map<Integer, Object>>中 * * @param sheet */ private List<Map<Integer, Object>> insertSave(Sheet sheet,Model m) { int i; List<Map<Integer, Object>> delforList = new ArrayList<>(); for (i = 2; i < sheet.getLastRowNum() + 1; i++) {// 数据记录从第三行开始 Row row = sheet.getRow(i); if(null == row) { return delforList; } Map<Integer, Object> map = new HashMap<Integer, Object>(); // row.getLastCellNum()由于是获取最后一个有值的列个数,不需要这个方案,这里固定截止到下标为21列 for (int j = 0; j < 22; j++) { Cell c = row.getCell(j); if (null != c) { switch (c.getCellTypeEnum()) { case _NONE: case BLANK: map.put(j,""); break; case BOOLEAN: map.put(j, c.getBooleanCellValue()); break; case ERROR: map.put(j, c.getErrorCellValue()); break; case FORMULA: map.put(j, c.getCellFormula()); break; case NUMERIC: Object value = null; if (HSSFDateUtil.isCellDateFormatted(c)) {// 时间类型 Date date = c.getDateCellValue(); if (j == 15) { value = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss"); map.put(j, value); break; } value = DateFormatUtils.format(date, YYYY_MM_DD); map.put(j, value); } else {// 数值类型 value = c.getNumericCellValue(); DecimalFormat df = new DecimalFormat(_0); value = df.format(value); map.put(j, value); } break; default: if (StringUtils.isNotBlank(c.getStringCellValue())) { map.put(j, c.getStringCellValue()); }else { map.put(j,""); } break; } }else { map.put(j,""); } } // 关键字段都为空的,结束遍历 if (StringUtils.isEmpty(map.get(2).toString()) && StringUtils.isEmpty(map.get(4).toString()) && StringUtils.isEmpty(map.get(5).toString()) && StringUtils.isEmpty(map.get(6).toString()) && StringUtils.isEmpty(map.get(8).toString()) && StringUtils.isEmpty(map.get(21).toString())) { int num = i + 1; m.addAttribute("sourse", StringUtils.join("数据读取截止于", num, "行:六个关键字段都为空或者该行无数据")); return delforList; } delforList.add(map); } return delforList; }