java生成多个excel并生成zip
java生成多个excel并生成zip
框架:若依框架
思路:
1.生成不同excel的workBook对象
2.循环把excel文件写到zip流中
@GetMapping("/export/file")
public void exportFile(HttpServletResponse resp, @RequestParam String requestNo) throws Exception{
service.exportFile(resp, requestNo);
}
// 生成workBook对象这块改了改若依框架中的excel导出
ExcelUtil<FileDetail> util = new ExcelUtil<FileDetail>(FileDetail.class);
Workbook workbook = util.exportExcelToZip(resp, csf, "xxxxx");
private void zipFile(HttpServletResponse resp, List<WorkBook> workbooks,String requestNo) throws IOException {
ServletOutputStream out = resp.getOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(out);
try {
resp.setContentType("application/octet-stream; charset=UTF-8");
resp.setHeader("Content-Disposition", "attachment; filename=" + requestNo + ".zip");
for (Workbook workbook : workbooks) {
ZipEntry z = new ZipEntry("abc.xlsx");
zipOutputStream.putNextEntry(z);
workbook.write(zipOutputStream);
}
zipOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
//注意关闭顺序,否则可能文件错误
if (zipOutputStream != null) {
zipOutputStream.close();
}
if (out != null) {
out.close();
}
}
}
