转自: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. C# NET 微信临时素材上传

    最近在做这个,一开始也是不明白为什么给个URL带着两个参数就直接上传了,网上看了很多都是PHP,但是PHP没看过是不会 的 所以就一直在找网上什么Demo之类的讲解,最后还是不错找到了一个比较好理解的 ...

  2. maven的配置和eclipse maven插件安装

    1.下载maven:http://maven.apache.org/download.cgi 2. 配置环境变量: 3. 修改maven文件夹下bin/conf/settings.xml:maven仓 ...

  3. java WebSocket HTML页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Javascript设计模式之发布-订阅模式

    简介 发布-订阅模式又叫做观察者模式,他定义了一种一对多的依赖关系,即当一个对象的状态发生改变的时候,所有依赖他的对象都会得到通知. 回忆曾经 作为一名前端开发人员,给DOM节点绑定事件可是再频繁不过 ...

  5. Linux - TCP/IP网络协议基础

    1.0 Tcp / IP 背景介绍 上世纪70年代,随着计算机的发展,人们意识到如果想要发挥计算机的更大作用,就要讲世界各地的计算机连接起来. 但是简单的连接时不够的,因为计算机之间无法沟通.因此设计 ...

  6. jenkins 中MultiJob Phase的使用,简单的pipeline可以用这个写

  7. 【JZOJ5605】【NOI2018模拟3.26】Arg

    题目描述 给出一个长度为 m 的序列 A, 请你求出有多少种 1...n 的排列, 满足 A 是它的一个 LIS. 解题思路 如何求出一个序列的LIS? 对于二分的方法,每次插入一个数,将它放到第一个 ...

  8. sql——limit

    PageHelper: https://blog.csdn.net/baidu_38083619/article/details/82463058 Sql执行顺序: https://blog.csdn ...

  9. struts2-052漏洞

    转:https://thief.one/2017/09/06/1/ s2-052漏洞介绍 s2-052漏洞是当用户使用带有XStream组件的Struts-REST插件对XML格式的数据包进行反序列化 ...

  10. Jmeter接口测试之用例数据分离

    之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越来越麻烦,有没有好的方法来解决这种情况呢? ...