【转】java导出多个excel表格,并压缩成zip输出
转自: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输出的更多相关文章
- Java实现将文件或者文件夹压缩成zip
最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功能为: ( ...
- 【转】Java实现将文件或者文件夹压缩成zip
转自:https://www.cnblogs.com/zeng1994/p/7862288.html package com.guo.utils; import java.io.*; import j ...
- Java导出数据生成Excel表格
事先准备: 工具类: package com.wazn.learn.util.export; import java.sql.Connection; import java.sql.DriverMan ...
- Java操作Jxl实现导出数据生成Excel表格数据文件
实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...
- 在ASP.NET Web Forms中使用页面导出伪xls Excel表格
将数据导出为Excel表格是比较常见的需求,也有很多组件支持导出真正的Excel表格.由于Excel能打开HTML文件,并支持其中的table元素以及p之类的文本元素的显示,所以把.html扩展名改为 ...
- 导出数据到Excel表格
开发工具与关键技术:Visual Studio 和 ASP.NET.MVC,作者:陈鸿鹏撰写时间:2019年5月25日123下面是我们来学习的导出数据到Excel表格的总结首先在视图层写导出数据的点击 ...
- java 实现Excel压缩成Zip导出
1 概述 在web项目中常见的一种场景就是将文件导出为Excel,但是当需要导出多个Excel时,使用者将频繁操作,这样就严重降低了项目的友好交互性以及易用性,那么怎么才能优雅的解决这个问题呢?笔者今 ...
- 【游戏开发】Excel表格批量转换成lua的转表工具
一.简介 在上篇博客<[游戏开发]Excel表格批量转换成CSV的小工具> 中,我们介绍了如何将策划提供的Excel表格转换为轻便的CSV文件供开发人员使用.实际在Unity开发中,很多游 ...
- java实现将文件压缩成zip格式
以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...
随机推荐
- 08-【jsp重点】
jsp的四个作用域和9个内置对象 jsp内置对象[重点]:pageContext.request.session.application.response.out.page.exception.con ...
- ARM cortex-version
cortex-M\A\R M microcontroller 微控制器 就是单片机 A application 应用及处理器 就是手机平板电脑等 R realtime 实时处理器 响应 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- java中有个很强大的工具jconsole.exe
这个工具可以监控java程序的线程,cpu和内存使用情况.
- Hdu 1517 巴什博奕变形
易知2-9为先手胜 继续递推下去 10-18 后手胜 再推发现19-162先手胜 即发现有9(9) 18(2*9) 162(9*2*9)..... #include<bits/stdc++.h& ...
- URLConnection类的使用
URLConnection类概述 URLConnection是个抽象类,它有两个直接子类分别是HttpURLConnection和JarURLConnection,它是基于Http协议的.另外一个重要 ...
- jpa @Query()参数设置,:冒号方式、?NO.问号方式、实体类对象参数设置
一.service层事务(update/delete) @Transactional(rollbackFor = Exception.class) 二.@Query()参数设置 ?x 和:XX不能混 ...
- MyBatis中<![CDATA[ ]]>的使用
原文地址:https://www.cnblogs.com/catgatp/p/6403382.html <![CDATA[]]>和转义字符 被<![CDATA[]]>这个标记所 ...
- C# 各个版本特征
历史版本 C#作为微软2000年以后.NET平台开发的当家语言,发展至今具有17年的历史,语言本身具有丰富的特性,微软对其更新支持也十分支持.微软将C#提交给标准组织ECMA,C# 5.0目前是ECM ...
- 高并发下的 Nginx 优化与负载均衡
高并发下的 Nginx 优化 英文原文:Optimizing Nginx for High Traffic Loads 过去谈过一些关于Nginx的常见问题; 其中有一些是关于如何优化Nginx. ...