热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Java批量文件压缩导出并下载到本地示例代码

这篇文章主要介绍了Java批量文件压缩导出并下载到本地示例代码,实现思路首先要把zip流写入到http响应输出流中,再把excel的流写入zip流中,具体示例代码,大家通过本文学习吧

主要用的是org.apache.tools.zip.ZipOutputStream  这个zip流,这里以Execl为例子。

思路首先把zip流写入到http响应输出流中,再把excel的流写入zip流中(这里可以不用生成文件再打包,只需把execl模板读出写好数据输出到zip流中,并为每次的流设置文件名)

   例如:在项目webapp下execl文件中 存在1.xls,2.xls,3.xls文件

1.Controller

 @RequestMapping(value = "/exportAll",method = RequestMethod.GET)
  public void exportAll() throws IOException{
    try {
      HttpServletResponse respOnse=this.getResponse();
      response.setContentType("application/octet-stream");
      String execlName = "报表";
      response.addHeader("Content-Disposition", "attachment;filename="+new String(execlName.getBytes(),"iso-8859-1") +".zip");
      OutputStream out = response.getOutputStream();
      testService.exportAll(out);
    } catch (Exception e) {
      ....
    }
  }

2.Service

import java.io.OutputStream;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.servlet.http.HttpServletRequest;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
 public boolean exportAll(OutputStream out){
  ZipOutputStream zipStream = null;
  HSSFWorkbook wb = null;
  try{
    List datas = testService.getTestData();
    zipStream = new ZipOutputStream(out);//这里是把zip流输出到httpresponse流中
    for(int i=0;i<3;i++){
     wb = POIUtil.getWorkbook(i);//获取0,1,2.xls文件
     HSSFSheet sheet = wb.getSheetAt(0);
     testService.setSheet(sheet,datas);//...处理文件内容操作
     ZipEntry zipEntry = new ZipEntry(new String("文件名XXX".getBytes(),"utf-8")+".xls"); //自己命名,这里假设是1,2,3
     zipStream.putNextEntry(zipEntry);
     wb.write(zipStream);//这里就是循环每次把execl写入zip包中
     zipStream.flush();
     }
    }catch (Exception e) {
      throw new SysException(ERRORConstants.COMMON_SYSTEM_ERROR, e);
    }finally {
       try {
        if(wb!=null){
           wb.close(); 
        }
        if(zipStream!=null){
          zipStream.close();
        }
        out.flush();
        out.close();
      } catch (IOException e) {
        throw new SysException(ERRORConstants.COMMON_CLOSE_ERROR, e);
      }
    }
  }     
  public static HSSFWorkbook getWorkbook(String bh){
    try {
      String line = File.separator;
      ServletRequestAttributes aRequestAttributes=(ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
      HttpServletRequest request =aRequestAttributes==null&#63;null:aRequestAttributes.getRequest();
      String webpath=request.getServletContext().getRealPath("/");
      File file = new File(webpath+line+"excel"+line+bh+".xls");
      POIFSFileSystem poifsFileSystem = new POIFSFileSystem(new FileInputStream(file));
      HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem);
      return wb;
   } catch (Exception e) {
      throw new SysException(ERRORConstants.COMMON_SYSTEM_ERROR,e);
   }
  }

  最后的结果生成一个报表.zip,其中包含3个文件1.xls,2.xls,3.xls

总结

以上所述是小编给大家介绍的Java 批量文件压缩导出并下载到本地示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


推荐阅读
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 探讨了小型企业在构建安全网络和软件时所面临的挑战和机遇。本文介绍了如何通过合理的方法和工具,确保小型企业能够有效提升其软件的安全性,从而保护客户数据并增强市场竞争力。 ... [详细]
  • 在本周的白板演练中,Apache Flink 的 PMC 成员及数据工匠首席技术官 Stephan Ewen 深入探讨了如何利用保存点功能进行流处理中的数据重新处理、错误修复、系统升级和 A/B 测试。本文将详细解释保存点的工作原理及其应用场景。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 分享个人的技术博客链接和微信公众号,提供更优质的阅读体验。 ... [详细]
  • 本文介绍如何处理服务器上使用curl命令访问HTTPS域名时出现的SSL连接错误问题。通过更新NSS库版本,可以有效解决这一常见问题。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • 本文介绍如何使用Perl编写一个简单的爬虫,从丁香园网站获取意大利的新冠病毒感染情况。通过LWP::UserAgent模块模拟浏览器访问并解析网页内容,最终提取所需数据。 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • PostgreSQL 10 离线安装指南
    本文详细介绍了如何在无法联网的服务器上进行 PostgreSQL 10 的离线安装,并涵盖了从下载安装包到配置远程访问的完整步骤。 ... [详细]
  • 数组元素逆序排列的实现
    本文介绍了一种简单有效的方法,用于将整数数组中的元素进行逆序排列。通过折半交换对应位置的元素,可以高效地完成这一任务。 ... [详细]
  • 本文介绍如何在Linux Mint系统上搭建Rust开发环境,包括安装IntelliJ IDEA、Rust工具链及必要的插件。通过详细步骤,帮助开发者快速上手。 ... [详细]
  • 精选15款免费扁平化界面设计资源
    高质量的网页和移动元素是任何Web或移动项目的基础。优秀的UI设计组件不仅能够提升用户体验,还能显著缩短设计师的工作时间,帮助他们快速创建出引人注目的作品。本文将分享一系列免费的扁平化设计素材。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
author-avatar
芦子根_889
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有