java 导出多个excel为zip文件
需求:数据导出excel,数据只有一条导出文件为 .xls,多条导出文件为 .zip
/**
* zip文件下载
*
* @param list worbook
* @param response response
*/
public void zipDownload(List<Workbook> list, HttpServletResponse response) {
ServletOutputStream outputStream = null;
try {
// 文件名称
String fileName = "XXX统计" + ".zip";
// 编码
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition",
"attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
// 跨域设置
response.addHeader("Access-Control-Expose-Headers", "*");
outputStream = response.getOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream);
// 循环处理 Workbook
for (Workbook sheets : list) {
zipOutputStream.putNextEntry(new ZipEntry(
sheets.getSheetName(0).replace(" ", "").concat(".xlsx")));
sheets.write(zipOutputStream);
}
zipOutputStream.flush();
zipOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}