java导出excel并压缩

来源:互联网 发布:java项目怎么打jar包 编辑:程序博客网 时间:2024/06/06 07:28
  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.     }  

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 余额宝金额冻结怎么办 adidas买了假货怎么办 余额宝冻结金额怎么办 买到不合格地板怎么办 买到翻新地板怎么办 食品里有头发怎么办 家具环保不达标怎么办 买到坏了的食物怎么办 空调检测不合格的怎么办 淘宝卖精仿遇到打假怎么办? 没有收到提货码怎么办 增值税发票超过180天怎么办 花呗借钱还不上怎么办 实体店里没人气怎么办 EMS快件无人签收怎么办 邮政快递丢失了怎么办 快递手机丢了怎么办 拍照签收没收到怎么办 拼多多开店货源怎么办 被购买鉴定投诉怎么办 淘宝上买东西错想用花呗怎么办 淘宝想用花呗买东西差一点怎么办 买了假货怎么办还用吗 免税店买完东西怎么办 淘宝恶意拍单怎么办 二手西服不想要怎么办 苹果8p费电快怎么办 赌博被骗没证据怎么办 异地车子办保险怎么办 淘宝买到旧货怎么办 苹果官网买手机发票怎么办 车子异地换牌照怎么办 汽车异地上保险怎么办 后悔买保险了怎么办 平安run不计步怎么办 天梭力洛克有划痕怎么办 天梭手按钮坏了怎么办 天梭机械表总慢怎么办 买的天梭表没电了怎么办 天猫遇见假货怎么办 苹果六s内存不足怎么办