【转】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 ...
随机推荐
- 07-【jsp基本了解】
jsp 动态网页技术:服务器和用户交互的动态网页技术jsp[java server page ]jsp ≍ html +servletjsp 文件是以 *.jsp结尾:jsp文件 靠服务器运行,jsp ...
- C++ 内联函数 摘自 C++ 应用程序性能优化
内联函数 在C++语言的设计中,内联函数的引入可以说完全是为了性能的考虑.因此在编写对性能要求比较高的C++程序时,非常有必要仔细考量内联函数的使用. 所谓"内联",即将被调用函数 ...
- python常用模块:模块练习
今日作业: 1.简述 什么是模块 模块就将一些函数功能封装在一个文件内,以‘文件名.py’命名,以“import 文件名”方式调用 模块有哪些来源 自定义.内置.DLL编译器.包模块的格式要求有哪些 ...
- Linux用户组管理及用户权限4
权限管理: ls -l rwxrwxrwx: 左三位:定义user(owner)的权限 中三位:定义group的权限 ...
- 第十五届四川省省赛 SCU - 4444 Travel
给你一个一共由两种边的完全图 要求你求1到N的最短路 q队列为前沿队列(已探索过且最外围的点) p队列为未探索队列(未探索过的点) depth这个数组的用法并不是代表实际上这个点在第几层 而是防止死 ...
- swiper 使用心得
首先,我在这次学习的最大收益是,学习新框架.或者技术,先找官方文档比较好,那里的很全,你想要的基本都有的,如果没有那就是不支持喽. 然后简单概括下是怎么用的(比较谦虚,大家勿怪) 一 .找他的官方文档 ...
- Android蓝牙操作
1.添加蓝牙权限 <uses-permission android:name = "android.permission.BLUETOOTH"/> <!--启用应 ...
- vue实例之组件开发:图片轮播组件
一.普通方式: 其中,index是关键. <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- java服务宕机原因查询
背景 在java服务项目上线之后经常会出现宕机的情况 常见原因 内存溢出 1.查到服务进程号 [root@wms ~]# ps -ef|grep java root 6399 6069 0 08:57 ...
- java常见问题 ——编辑报错1
报错1 The method add(CatNode) in the type List<CatNode> is not applicable for the arguments (Str ...