有时项目中会有需求,是将内容导出到excel表格中,参考网上的很多教程写的都比较多,现在将主要代码写成工具类,封装成jar包。
一、接下来要展示的Excel导出功能借助的是自己设置Excel模板,如下:
注意:
需要对第一列两行设置备注:
1.设置你要导出字段的区域,到第几行第几列就写上对应单元格号。(这里是两行两列,所以到B2),如图:
2.(1)设置items(存放你要导出信息的集合名,下面在写导出时产生的。)
(2)设置var(要导出信息的实体类名称)
(3)设置lastCell(与上面一样,字段涉及单元格的范围)
二、编写Excel导出业务:
//1.信息放进Excel模板
@RequestMapping(value = "/export", method = RequestMethod.POST)
public Map<String, Object> exports(@RequestBody QueryParam queryParam) throws IOException {
Map<String, Object> varMap = new HashMap<>();
//直接数据库查询出来要导出的全部信息。(如果需要指定导出的数据,前台传参,然后查询导出。这里默认导出所有信息。)
List<Person> personList = excelService.selectByFilter(queryParam);
//personList:上面Excel备注中要用到的集合名称
varMap.put("personList ", personList );
//templatePath:配置的Excel模板路径(比如idea可以设置注解,配置在application.yml中),StringUtil.serial():Excel文件加密后的名字,varMap:需要导出到Excel的信息
return ExcelUtil.exportFile(templatePath, "ExcelExport.xlsx", StringUtil.serial() + ".xlsx", "Excel导出信息.xlsx", varMap);
}
//2.下载Excel
@RequestMapping(value="/download", method = RequestMethod.GET)
public void download1(HttpServletRequest request, HttpServletResponse response, @RequestParam("fileName") String fileName,@RequestParam(name = "originName", required = false) String originName) throws IOException {
if (!StringUtils.isEmpty(originName)) {
FileUtil.download(request, response, fileName, originName);
} else {
FileUtil.download(request, response, fileName);
}
}
说明:
ExcelUtil、FileUtil、StringUtils:Excel导入模板、Excel文件下载、Excel名称编码这几个类稍微有点多,已经封装成jar包,具体另作展示(若有需要可以私聊)。