java批量数据导出多个excel,为什么老是只生成一个excel文件 5

publicvoidexportexcel(HttpServletRequestrequest,HttpServletResponseresponse)throwsExc... public void exportexcel(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 为模板中变量赋值
// 传递模板地址和要操作的页签
ExcelExp excel = new XssExcelExp("../../excel/volunteer.xlsx", 0);
VolunteerFormMap volunteerFormMap = findHasHMap(VolunteerFormMap.class);
volunteerFormMap.put("mapper_id","VolunteerMapper.findvolunteer");
List<Map<String, Object>> lists = baseService.findByAll(volunteerFormMap);
for (Map<String, Object> map2 : lists) {
Map<String, String> map1 = new HashMap<String, String>();
map1.put("name", (String) map2.get("name"));
map1.put("gender", (String) map2.get("gender"));
map1.put("education", (String) map2.get("education"));
map1.put("politicalAff", (String) map2.get("political_aff"));
map1.put("workUnit", (String) map2.get("work_unit"));
map1.put("unitAddress", (String) map2.get("unit_address"));
map1.put("address", (String) map2.get("address"));
map1.put("phoneNumber", (String) map2.get("phoneNumber"));
map1.put("idNumber", (String) map2.get("id_number"));
map1.put("hobby", (String) map2.get("hobby"));
map1.put("contactInfo", (String) map2.get("contact_info"));
map1.put("introducer", (String) map2.get("introducer"));
map1.put("partinTime", (String) map2.get("partin_time"));
excel.replaceExcelData(map1);

// 导出,此处只封装了浏览器下载方式
// 调用downloadExcel,返回输出流给客户端
String fileName = (String) map2.get("name") + ".xlsx";
excel.downloadExcel(response, fileName);
}
}

public void downloadExcel(HttpServletResponse response, String filaName) throws IOException {
String encodeFileName = URLEncoder.encode(filaName, "UTF-8");
response.addHeader("Content-Disposition", "attachment;filename=" + encodeFileName);
//response.setHeader("Accept-Ranges", "bytes");
ServletOutputStream out = response.getOutputStream();
xssWb.write(out);
out.flush();
out.close();
}
展开
 我来答
横行疤道
推荐于2017-12-13
知道答主
回答量:3
采纳率:0%
帮助的人:2694
展开全部
java servlet一个请求,只能有一个返回输出流,所以一次只能下载一个文件。
如果确实需要下载多个Excel文件,可以先在本地生成多个Excel文件,然后使用zip压缩,再通过一个返回输出流将zip压缩包返回给客户端。我也遇到同样的问题,这个是在别人那搜到的。
响亮的ITdog
2017-10-11 · TA获得超过167个赞
知道小有建树答主
回答量:122
采纳率:0%
帮助的人:96.5万
展开全部
一个response应该不能返回多个文件的,一次只能返回一个文件啊。如果能返回多个文件,那你的contentType是啥,不合理啊 是不是。
追问
那有什么解决办法没?
追答
同一个excel多个sheet不行?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式