失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java导出多个excel表格 并压缩成zip输出

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

时间:2024-09-02 22:40:14

相关推荐

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());// 付款人emaildata.add(vo.getPayName());// 账户名称data.add(vo.getTotalCost());// 总金额(元)data.add(vo.getTotalCount());// 总笔数datas.add(data);List<Object> data2 = new ArrayList<>();// 插入第二行表头data2.add("商户流水号");// 商户流水号data2.add("收款人email");// 收款人emaildata2.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());// 收款人emaildata3.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;}}

如果觉得《java导出多个excel表格 并压缩成zip输出》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。