一.业务背景
工作中接到的一个业务需求,需要将某部分数据按照某个条件拆分成多个excel然后打包成压缩包,导出压缩包。
二.解决方式探索
作为一个码农,当不知道该如何解决问题的时候,第一步自然是先面向百度(谷歌)编程。于是开始了漫长的搜索。大多数的解决方式都是先在本地建一个临时的文件夹,将每个excel放到这个文件夹中,全部添加完成后打包这个文件夹,再删除这个文件夹。
看到这种解决方式,我第一反应就是恶心!什么?这样搞也太蠢了把。于是我又继续搜啊搜,终于让我找到了一个非常非常舒服的解决方式,非常感谢这位博主。
三.解决问题
@ResponseBody
@RequestMapping(value = "/xxx")
public BaseResp unDirectExport(Date date, HttpServletResponse response) throws Exception {
String fileName = xxx;
ResponseUtil.setMultipartHeader(response, fileName);
List list = xxxService.query(xx);
//按某个条件分组
Map> map = list.stream().collect(Collectors.groupingBy(T::getXXX));
exportExcel(response, map);
return BaseResp.succResp();
}
private void exportExcel(HttpServletR