java导出多个excel表格 并压缩成zip输出

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

	/**	 * 导出支付宝批量支付文件excel	 * 	 * @param name	 * @param begintime	 * @param endtime	 * @param p	 * @param l	 * @param k	 * @param request	 * @param response	 */	@RequestMapping("exportApplyBatchExcel")	public void exportApplyBatchExcel(String name, String begintime, String endtime, Integer p, Integer l, String k,			HttpServletRequest request, HttpServletResponse response) {		// if (auth.getCurrentUserId(k) == null) {		// ResponseUtil.json(JsonUtil.toString(GenericResponses.TOKEN_LOSE),		// response);		// return;		// }		// 逐页查询数据,将所有数据导出到excel表中(注:此方法中不传p,l参数,使用的是service层中,默认的第1页开始,每页显示50条)		Integer pp = 1;		Long tt = 1l;		String[] headers = { "批次号", "付款日期", "付款人email", "账户名称", "总金额(元)", "总笔数" };		OutputStream out = null;		while (true) {			pp++;			// 查询数据库			ListResponse<?> listResponse = this.finApi.selectApplyBatch(name, begintime, endtime, p, l, k);			// 获取总页数			Long total = listResponse.getTotal();			if (tt > 0) {				tt = total - pp;			} else {				break;			}			// 获取查询结果,数据列表			Object result = listResponse.getResult();			// 类型转换			if (result != null) {				List<ApplyBatchMXVo> applyBatchMXVos = JsonUtil.readJsonList(JsonUtil.toString(result),						ApplyBatchMXVo.class);				// 导出				try {					// 设置导出excel文件					out = response.getOutputStream();					ZipOutputStream zipOutputStream = new ZipOutputStream(out);					String fileName = "批量支付文件" + ".zip";					response.setContentType("application/octet-stream ");					response.setHeader("Connection", "close"); // 表示不能用浏览器直接打开					response.setHeader("Accept-Ranges", "bytes");// 告诉客户端允许断点续传多线程连接下载					response.setHeader("Content-Disposition",							"attachment;filename=" + new String(fileName.getBytes("GB2312"), "ISO8859-1"));					response.setCharacterEncoding("UTF-8");					// 遍历填充数据					for (ApplyBatchMXVo vo : applyBatchMXVos) {						List<List<Object>> datas = new ArrayList<>();						List<Object> data = new ArrayList<>();						data.add(vo.getId());// 批次号						data.add(vo.getCreateTime());// 付款时间						data.add(vo.getPayAccount());// 付款人email						data.add(vo.getPayName());// 账户名称						data.add(vo.getTotalCost());// 总金额(元)						data.add(vo.getTotalCount());// 总笔数						datas.add(data);						List<Object> data2 = new ArrayList<>();						// 插入第二行表头						data2.add("商户流水号");// 商户流水号						data2.add("收款人email");// 收款人email						data2.add("收款人姓名");// 收款人姓名						data2.add("付款金额(元)");// 付款金额(元)						data2.add("付款理由");// 付款理由						datas.add(data2);						for (ApplyMoneyMXVo amvo : vo.getApplyMoneyMXVos()) {							List<Object> data3 = new ArrayList<>();							data3.add(amvo.getApplyNo());// 商户流水号							data3.add(amvo.getUserAccount());// 收款人email							data3.add(amvo.getUserName());// 收款人姓名							data3.add(amvo.getMoney());// 付款金额(元)							data3.add(amvo.getPayCase());// 付款理由							datas.add(data3);						}						// 导出文件zip压缩设置						Workbook book = GenerateXmlUtil.generateCreateXsl(headers, datas, "批量支付文件");						ZipEntry entry = new ZipEntry(vo.getId() + ".xls");						zipOutputStream.putNextEntry(entry);						book.write(zipOutputStream);					}					// 关闭输出流					zipOutputStream.flush();					zipOutputStream.close();				} catch (Exception e) {					e.printStackTrace();					ResponseUtil.text(TraceUtil.trace(e), response);				}			}			// 重新设置分页参数			p = pp;		}	}   

点这里可以跳转到人工智能网站

发表评论