jeecg项目将workbook 的Excel流添加到zip压缩包里导出
1、直接献出代码
- Map<String,List<ConfidentialInformation>> typeMap = new HashMap<>();
- try {
- //设置导出
- response.addHeader("Cache-Control","no-cache");
- response.setCharacterEncoding("UTF-8");
- response.setContentType("application/octet-stream;charset=UTF-8");
- String ua = request.getHeader("user-agent");
- ua = ua == null ? null : ua.toLowerCase();
- String docFileName = dateMonth.toString()+"月凭证信息情况.zip";
- if(ua != null && (ua.indexOf("firefox") > 0 || ua.indexOf("safari")>0)){
- try {
- docFileName = new String(docFileName.getBytes(),"ISO8859-1");
- response.addHeader("Content-Disposition","attachment;filename=" + docFileName);
- } catch (Exception e) {
- }
- }else{
- try {
- docFileName = URLEncoder.encode(docFileName, "utf-8");
- response.addHeader("Content-Disposition","attachment;filename=" + docFileName);
- } catch (Exception e) {
- }
- }
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- ZipOutputStream zipOut = new ZipOutputStream(out);
- byte[]buffer=new byte[1024];
- for (String names:typeMap.keySet()){
- Map<String,Object> outMaps = new HashMap<>();
- outMaps.put( "datac",typeMap.get( names ) );
- //Excel处理成zip包
- XLSTransformer transformer = new XLSTransformer();
- String srcFilePath = request.getServletContext().getRealPath("/")+"/export/template/credentialReport.xls";
- InputStream is = new BufferedInputStream(new FileInputStream(srcFilePath));
- Workbook workbook =null;
- workbook = transformer.transformXLS(is, outMaps);
- //压缩包zip留。
- ByteArrayOutputStream outtemp = new ByteArrayOutputStream();
- workbook.write(outtemp);
- ByteArrayInputStream bais =new ByteArrayInputStream(outtemp.toByteArray());
- String nickname = ResourceUtil.getCacheDicDetail("apportion",names,"typename");
- zipOut.putNextEntry(new ZipEntry(nickname+"凭证信息表.xls"));
- int dataLen;
- //读入需要下载的文件的内容,打包到zip文件
- while((dataLen=bais.read(buffer))>0){
- zipOut.write(buffer,0,dataLen);
- }
- zipOut.closeEntry();
- bais.close();
- outtemp.close();
- is.close();
- }
- zipOut.close();
- out.close();
- byte[] zipByte=out.toByteArray();
- OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
- toClient.write(zipByte);
- toClient.flush();
- }catch (Exception e){
- e.printStackTrace();
- }
jeecg项目将workbook 的Excel流添加到zip压缩包里导出的更多相关文章
- [java][JEECG] Maven settings.xml JEECG项目初始化 RouYi settings.xml配置
好吧一下是经验之谈,原本这些坑不应该躺的,从头看手册完全可以避免这些. 懒得整理了,看懂了就看,看不懂自己琢磨JEECG的帮助文档去,不过嘛我喜欢用Intelij IDEA,他里面都是别的IDE,不喜 ...
- Excel中添加并使用宏实现批量更新数据
一.状况描述 当我们需要后台更新大量数据的时候,可以使用该功能.二.解決方案 (1)新建一个Excel文件,并另存为启用宏的Excel工作簿,扩展名为.xlsm. (2)在Excel ...
- Myeclipse的web项目移植到Eclipse中需要添加的包
3.jstl.jar 4.standard-1.1.2.jar 把Myeclipse的web项目一直到Eclipse当中需要添加的包主要有一下4个: 1.servlet-api.jar 2.jsp-a ...
- jeecg项目子窗口获得父窗口元素id
jeecg项目子窗口获得父窗口元素id, var parentWin = frameElement.api.opener;alert($(parentWin.document).find(" ...
- 给你的流添加缓冲装置——字节块ByteChunk
这是一个很重要的一个字节数组处理缓冲工具,它封装了字节缓冲器及对字节缓冲区的操作,包括对缓冲区的写入.读取.扩展缓冲区大小等等,另外还提供相应字符编码的转码操作.此工具让缓冲操作变得更加方便,除了缓冲 ...
- iOS - UICollectionView 瀑布流 添加表头视图的坑
UICollectionView 瀑布流 添加表头视图的坑 首先是,需求加了个头视图在顶部,在collectionView中的头视图跟TableView的不一样,TableView的表头只要设置tab ...
- excel怎么设置密码保护?Excel文件添加密码保护教程
excel怎么设置密码保护?Excel文件添加密码保护教程 众所周知,Excel具有强大的数据处理和数据分析能力,广泛应用于加工学统计及金融统计中.特别是金融统计需要较高的安全性,那么就一定要为Exc ...
- 基于.NetCore开发博客项目 StarBlog - (10) 图片瀑布流
系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...
- python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter
最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...
随机推荐
- jmeter之HTTP信息管理器、正则表达式联合使用(获取登录session
如图所示,信息管理头的信息为请求头信息,如图所示 注意事项:1)body date里面的参数要是要注意英文编写条件下,可以通过https://www.json.cn/在线的json格式刷格式 2)注意 ...
- outlook 使用临时邮箱 使用旧数据
控制面板-->邮件32位 显示配置文件 删除再添加 具体可参考 https://blog.csdn.net/liuyukuan/article/details/80043840 偷懒,图片从网上 ...
- Google为远程入侵Titan M芯片提供最高150万美元的赏金
Google最近发布了一项新的公告,旨在提高对发现和报告Android操作系统中的严重漏洞的漏洞赏金的奖励,Google昨天为黑客设定了新的挑战性水平,使他们可以赢得高达150万美元的赏金. 从今天开 ...
- NOIP提高组2016总结
前言 大翻车! 300--: day1 8:30~9:00, 照常看题,思考. 9:00~9:15, 搞定第一题,很水. 9:15~9:45, 思考第二题,我考虑用分深度来处理,想出个个玄学暴力,但刚 ...
- Java——静态类型 实际类型
public class test { static class father { void run() { System.out.println("father run"); } ...
- 算法复习-a 到 z不完全排列生成
在网上看到这个题,觉得很有意思,也算是一种方法...但是复杂度同样很高,生成全排列本身需要很大复杂度. 题目:现在有 a 到 z 26 个元素, 编写程序打印 a 到 z 中任取 3 个元素的组合(比 ...
- linux操作目录命令之mkdir与rmdir
一.mkdir 创建目录(一个或多个目录) mkdir -m 777 -p path 1)-m 对新建目录设置权限 2)-p 可以是一个路径名称.此时若路径的某一级目录尚不存在,使有该选项后系统 ...
- linux 系统时间 硬件时间
Linux时钟分为系统时钟(System Clock)和硬件时钟(Real Time Clock,简称RTC).系统时钟是指当前Linux Kernel中的时钟:而硬件时钟则是主板上由电池供电的时钟, ...
- ASP.NET大文件断点上传
HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...
- 为什么C++中只有指针和引用才能实现多态?
代码: class A { public: virtual void Debug(){} }; class B:public A { public: virtual void Debug(){} }; ...