controller层
getExcelTemplate 方法:
public <T> byte[] getExcelTemplate(List<T> 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导入导出封装的相关注解以及相关工具类 请看下: 待整理