controller层
getExcelTemplate 方法:
publicbyte[] getExcelTemplate(List resultList,String templateUrl,int rowNum) throws Exception { ClassPathResource classPathResource = new ClassPathResource(templateUrl); // 读取Excel模板 此处为xls文件 如果是xlsx 则用XSSFWorkbook HSSFWorkbook hssfWorkbook = new HSSFWorkbook(classPathResource.getInputStream()); // 如果有多个sheet可循环 HSSFSheet currSheet = hssfWorkbook.getSheetAt(0); ByteArrayOutputStream out = new ByteArrayOutputStream(); Row row; //resultList 需要导出到模板文件的数据集合 if (resultList != null && resultList.size() > 0) { try { for (int j = 0; j < resultList.size(); j++) { T obj = resultList.get(j); row = currSheet.createRow(rowNum); rowNum++; for (int i = 0; i < annotationList.size(); i++) { ExcelFieldEntity excelFieldEntity = annotationList.get(i); Method readMethod = excelFieldEntity.getReadMethod(); Object value = readMethod.invoke(obj); if(value != null && readMethod.getReturnType().equals(String.class)){ if(handleMethod != null && StringUtils.isNotEmpty(excelFieldEntity.getDictType())){ value = handleMethod.invoke(handlerObj, excelFieldEntity.getDictType(),value); }else if (excelFieldEntity.getSelfHandlerObj() != null && excelFieldEntity.getSelfHandlerMethod() != null) { value = excelFieldEntity.getSelfHandlerMethod().invoke(excelFieldEntity.getSelfHandlerObj(), value); } } setCellValue(row,i,value); } } hssfWorkbook.write(out); } catch (Exception e) { throw e; }finally{ if(out != null){ try { out.flush(); out.close(); } catch (IOException e) { e.printStackTrace(); } } } } return out.toByteArray(); }
关于excel导入导出封装的相关注解以及相关工具类 请看下: 待整理



