转自:http://blog.csdn.net/qq_14861089/article/details/53169414    感谢作者分享

/**
* 导出支付宝批量支付文件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;
}
}

【转】java导出多个excel表格,并压缩成zip输出的更多相关文章

  1. Java实现将文件或者文件夹压缩成zip

            最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类.         这个工具类的功能为: ( ...

  2. 【转】Java实现将文件或者文件夹压缩成zip

    转自:https://www.cnblogs.com/zeng1994/p/7862288.html package com.guo.utils; import java.io.*; import j ...

  3. Java导出数据生成Excel表格

    事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...

  4. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

  5. 在ASP.NET Web Forms中使用页面导出伪xls Excel表格

    将数据导出为Excel表格是比较常见的需求,也有很多组件支持导出真正的Excel表格.由于Excel能打开HTML文件,并支持其中的table元素以及p之类的文本元素的显示,所以把.html扩展名改为 ...

  6. 导出数据到Excel表格

    开发工具与关键技术:Visual Studio 和 ASP.NET.MVC,作者:陈鸿鹏撰写时间:2019年5月25日123下面是我们来学习的导出数据到Excel表格的总结首先在视图层写导出数据的点击 ...

  7. java 实现Excel压缩成Zip导出

    1 概述 在web项目中常见的一种场景就是将文件导出为Excel,但是当需要导出多个Excel时,使用者将频繁操作,这样就严重降低了项目的友好交互性以及易用性,那么怎么才能优雅的解决这个问题呢?笔者今 ...

  8. 【游戏开发】Excel表格批量转换成lua的转表工具

    一.简介 在上篇博客<[游戏开发]Excel表格批量转换成CSV的小工具> 中,我们介绍了如何将策划提供的Excel表格转换为轻便的CSV文件供开发人员使用.实际在Unity开发中,很多游 ...

  9. java实现将文件压缩成zip格式

    以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...

随机推荐

  1. 8.8.ZooKeeper 原理和选举机制

    1.ZooKeeper原理 Zookeeper虽然在配置文件中并没有指定master和slave但是,zookeeper工作时,是有一个节点为leader,其他则为follower,Leader是通 ...

  2. 6.Shell 计划任务服务程序

    计划任务服务程序 经验丰富的系统运维工程师可以使得Linux在无需人为介入的情况下,在指定的时间段自动启用或停止某些服务或命令,从而实现运维的自动化. 如何设置服务器的计划任务服务,把周期性.规律性的 ...

  3. kubernetes管理机密信息

    一.启动应用安全信息的保护: Secret介绍: 应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名密码或者秘钥.将这些信息直接保存在容器镜像中显然不妥,Kubernetes 提供的解决方案是 ...

  4. WPF界面开发必备技能!TreeListView - 如何快速更新多个项目属性

    DevExpress广泛应用于ECM企业内容管理. 成本管控.进程监督.生产调度,在企业/政务信息化管理中占据一席重要之地.通过DevExpress WPF Controls,您能创建有着强大互动功能 ...

  5. 11步教你选择最稳定的MySQL版本

    11步教你选择最稳定的MySQL版本 来源:CSDN 作者:网络 发表于:2012-07-18 08:36 点击: MySQL开源数据库有多个重要分支,目前拥有的分支分别为:MySQL Cluster ...

  6. php类知识点滴---魔术方法,系统在特定时机触发的方法

    __get()获取私有或受保护属性时调用的方法 <?php class coach { private $chairfit = "徐晓冬"; public function ...

  7. BZOJ 3881[COCI2015]Divljak (AC自动机+dfs序+lca+BIT)

    显然是用AC自动机 先构建好AC自动机,当B中插入新的串时就在trie上跑,对于当前点,首先这个点所代表的串一定出现过,然后这个点指向的fail也一定出现过.那么我们把每个点fail当作父亲,建一棵f ...

  8. Acwing-168-生日蛋糕(搜索, 剪枝)

    链接: https://www.acwing.com/problem/content/170/ 题意: 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆 ...

  9. Codeforces Round #449 [ C/A. Nephren gives a riddle ] [ D/B. Ithea Plays With Chtholly ]

    PROBLEM C/A. Nephren gives a riddle 题 http://codeforces.com/contest/896/problem/A codeforces 896a 89 ...

  10. Codeforces 871C 872E Points, Lines and Ready-made Titles

    题 OvO http://codeforces.com/contest/871/problem/C ( Codeforces Round #440 (Div. 1, based on Technocu ...