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压缩包里导出的更多相关文章

  1. [java][JEECG] Maven settings.xml JEECG项目初始化 RouYi settings.xml配置

    好吧一下是经验之谈,原本这些坑不应该躺的,从头看手册完全可以避免这些. 懒得整理了,看懂了就看,看不懂自己琢磨JEECG的帮助文档去,不过嘛我喜欢用Intelij IDEA,他里面都是别的IDE,不喜 ...

  2. Excel中添加并使用宏实现批量更新数据

    一.状况描述    当我们需要后台更新大量数据的时候,可以使用该功能.二.解決方案    (1)新建一个Excel文件,并另存为启用宏的Excel工作簿,扩展名为.xlsm.    (2)在Excel ...

  3. Myeclipse的web项目移植到Eclipse中需要添加的包

    3.jstl.jar 4.standard-1.1.2.jar 把Myeclipse的web项目一直到Eclipse当中需要添加的包主要有一下4个: 1.servlet-api.jar 2.jsp-a ...

  4. jeecg项目子窗口获得父窗口元素id

    jeecg项目子窗口获得父窗口元素id, var parentWin = frameElement.api.opener;alert($(parentWin.document).find(" ...

  5. 给你的流添加缓冲装置——字节块ByteChunk

    这是一个很重要的一个字节数组处理缓冲工具,它封装了字节缓冲器及对字节缓冲区的操作,包括对缓冲区的写入.读取.扩展缓冲区大小等等,另外还提供相应字符编码的转码操作.此工具让缓冲操作变得更加方便,除了缓冲 ...

  6. iOS - UICollectionView 瀑布流 添加表头视图的坑

    UICollectionView 瀑布流 添加表头视图的坑 首先是,需求加了个头视图在顶部,在collectionView中的头视图跟TableView的不一样,TableView的表头只要设置tab ...

  7. excel怎么设置密码保护?Excel文件添加密码保护教程

    excel怎么设置密码保护?Excel文件添加密码保护教程 众所周知,Excel具有强大的数据处理和数据分析能力,广泛应用于加工学统计及金融统计中.特别是金融统计需要较高的安全性,那么就一定要为Exc ...

  8. 基于.NetCore开发博客项目 StarBlog - (10) 图片瀑布流

    系列文章 基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客? 基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目 基于.NetC ...

  9. python 导出数据到excel 中,一个好用的导出数据到excel模块,XlsxWriter

    最近公司有项目需要导出数据到excel,首先想到了,tablib,xlwt,xlrd,xlwings,win32com[还可以操作word],openpyxl,等模块但是 实际操作中tablib 写入 ...

随机推荐

  1. Django学习系列2:django环境中安装selenium并查看selenium版本号

    在Django环境中安装selenium (django) root@ranxf-TEST:/studydisk/Python_web_TDD/superlists# conda install se ...

  2. python基础练习题6

    01:求1+2!+3!+....+20!的和 s=0 t=1 for n in range(1,21): t*=n s+=t print('1!+2!+3!+.....+20!=%d'%s) 02:利 ...

  3. CentOS6.X系统启动流程

    1.硬件启动阶段 BIOS自检  BIOS的功能由两部分组成,分别是POST码和Runtime服务.POST阶段完成后它将从存储器中被清除,而Runtime服务会被一直保留,用于目标操作系统的启动.B ...

  4. python绘制国际象棋棋盘核心代码

    import turtle step = 40 for i in range(8): for j in range(8): turtle.penup() turtle.goto(i*step, j*s ...

  5. tar命令--数据归档(二)

    tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包.-c是表示产生新的包,-f指定包的文件名. tar -rf all.tar *.gif 这条命 ...

  6. mysql修改库名

    #!/bin/bash # 假设将sakila数据库名改为new_sakila # MyISAM直接更改数据库目录下的文件即可 mysql -uroot -p123456 -e 'create dat ...

  7. C#对应JavaScript的银行家舍入规则(Math.Round()对应toFixed(f))

    Math.Round((n * u - t * u )/ u, f);//这里使用银行家四舍五入对应JS的 toFixed() ((n * u - t * u) / u).toFixed(f) f为小 ...

  8. Quartz.NET常用方法 01

    Quartz.NET作为一款定时框架,它的最小可运行程序如下: var scheduler = StdSchedulerFactory.GetDefaultScheduler(); scheduler ...

  9. 织梦网站 TAG 标签调用

    一.TAG 标签在网站上的作用 1.什么是 TAG 标签? TAG 标签是一种由网站管理员自己定义的,比分类更准确.更具体,可以概括文 章主要内容的关键词. 2.TAG 标签作用 读者可以通过文章标签 ...

  10. 配置中心Apollo多环境部署