java导出excel并压缩

举报
tea_year 发表于 2021/12/30 00:21:14 2021/12/30
【摘要】 /**  * 导出支付宝批量支付文件excel  *   * @param name  * @param begintime  * @param endtim...
  1. /** 
  2.  * 导出支付宝批量支付文件excel 
  3.  *  
  4.  * @param name 
  5.  * @param begintime 
  6.  * @param endtime 
  7.  * @param p 
  8.  * @param l 
  9.  * @param k 
  10.  * @param request 
  11.  * @param response 
  12.  */  
  13. @RequestMapping("exportApplyBatchExcel")  
  14. public void exportApplyBatchExcel(String name, String begintime, String endtime, Integer p, Integer l, String k,  
  15.         HttpServletRequest request, HttpServletResponse response) {  
  16.     // if (auth.getCurrentUserId(k) == null) {  
  17.     // ResponseUtil.json(JsonUtil.toString(GenericResponses.TOKEN_LOSE),  
  18.     // response);  
  19.     // return;  
  20.     // }  
  21.     // 逐页查询数据,将所有数据导出到excel表中(注:此方法中不传p,l参数,使用的是service层中,默认的第1页开始,每页显示50条)  
  22.     Integer pp = 1;  
  23.     Long tt = 1l;  
  24.     String[] headers = { "批次号", "付款日期", "付款人email", "账户名称", "总金额(元)", "总笔数" };  
  25.     OutputStream out = null;  
  26.     while (true) {  
  27.         pp++;  
  28.         // 查询数据库  
  29.         ListResponse<?> listResponse = this.finApi.selectApplyBatch(name, begintime, endtime, p, l, k);  
  30.         // 获取总页数  
  31.         Long total = listResponse.getTotal();  
  32.         if (tt > 0) {  
  33.             tt = total - pp;  
  34.         } else {  
  35.             break;  
  36.         }  
  37.         // 获取查询结果,数据列表  
  38.         Object result = listResponse.getResult();  
  39.         // 类型转换  
  40.         if (result != null) {  
  41.             List<ApplyBatchMXVo> applyBatchMXVos = JsonUtil.readJsonList(JsonUtil.toString(result),  
  42.                     ApplyBatchMXVo.class);  
  43.             // 导出  
  44.             try {  
  45.                 // 设置导出excel文件  
  46.                 out = response.getOutputStream();  
  47.                 ZipOutputStream zipOutputStream = new ZipOutputStream(out);  
  48.                 String fileName = "批量支付文件" + ".zip";  
  49.                 response.setContentType("application/octet-stream ");  
  50.                 response.setHeader("Connection", "close"); // 表示不能用浏览器直接打开  
  51.                 response.setHeader("Accept-Ranges", "bytes");// 告诉客户端允许断点续传多线程连接下载  
  52.                 response.setHeader("Content-Disposition",  
  53.                         "attachment;filename=" + new String(fileName.getBytes("GB2312"), "ISO8859-1"));  
  54.                 response.setCharacterEncoding("UTF-8");  
  55.                 // 遍历填充数据  
  56.                 for (ApplyBatchMXVo vo : applyBatchMXVos) {  
  57.                     List<List<Object>> datas = new ArrayList<>();  
  58.                     List<Object> data = new ArrayList<>();  
  59.                     data.add(vo.getId());// 批次号  
  60.                     data.add(vo.getCreateTime());// 付款时间  
  61.                     data.add(vo.getPayAccount());// 付款人email  
  62.                     data.add(vo.getPayName());// 账户名称  
  63.                     data.add(vo.getTotalCost());// 总金额(元)  
  64.                     data.add(vo.getTotalCount());// 总笔数  
  65.                     datas.add(data);  
  66.                     List<Object> data2 = new ArrayList<>();  
  67.                     // 插入第二行表头  
  68.                     data2.add("商户流水号");// 商户流水号  
  69.                     data2.add("收款人email");// 收款人email  
  70.                     data2.add("收款人姓名");// 收款人姓名  
  71.                     data2.add("付款金额(元)");// 付款金额(元)  
  72.                     data2.add("付款理由");// 付款理由  
  73.                     datas.add(data2);  
  74.                     for (ApplyMoneyMXVo amvo : vo.getApplyMoneyMXVos()) {  
  75.                         List<Object> data3 = new ArrayList<>();  
  76.                         data3.add(amvo.getApplyNo());// 商户流水号  
  77.                         data3.add(amvo.getUserAccount());// 收款人email  
  78.                         data3.add(amvo.getUserName());// 收款人姓名  
  79.                         data3.add(amvo.getMoney());// 付款金额(元)  
  80.                         data3.add(amvo.getPayCase());// 付款理由  
  81.                         datas.add(data3);  
  82.                     }  
  83.                     // 导出文件zip压缩设置  
  84.                     Workbook book = GenerateXmlUtil.generateCreateXsl(headers, datas, "批量支付文件");  
  85.                     ZipEntry entry = new ZipEntry(vo.getId() + ".xls");  
  86.                     zipOutputStream.putNextEntry(entry);  
  87.                     book.write(zipOutputStream);  
  88.                 }  
  89.                 // 关闭输出流  
  90.                 zipOutputStream.flush();  
  91.                 zipOutputStream.close();  
  92.             } catch (Exception e) {  
  93.                 e.printStackTrace();  
  94.                 ResponseUtil.text(TraceUtil.trace(e), response);  
  95.             }  
  96.         }  
  97.         // 重新设置分页参数  
  98.         p = pp;  
  99.     }  

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/77531177

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。