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

  

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

  

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

  

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

  

<强>

1.控制器         @RequestMapping (value=" https://www.yisu.com/exportAll ",方法=RequestMethod.GET)   公共空间exportAll()抛出IOException {   尝试{   HttpServletResponse响应=this.getResponse ();   response.setContentType(“应用程序/八进制”);   字符串execlName="报表”;   响应。addHeader(“附加”、“附件;文件名=" +新字符串(execlName.getBytes (),“iso - 8859 - 1”) + " zip ");   OutputStream=response.getOutputStream ();   testService.exportAll(出);   }捕捉(异常e) {   …   }   }      

<强>

2.服务         进口java.io.OutputStream;   进口org.apache.poi.hssf.usermodel.HSSFSheet;   进口org.apache.poi.hssf.usermodel.HSSFWorkbook;   进口org.apache.tools.zip.ZipEntry;   进口org.apache.tools.zip.ZipOutputStream;   进口java.io.File;   进口java.io.FileInputStream;   进口javax.servlet.http.HttpServletRequest;   进口org.apache.poi.hssf.usermodel.HSSFCellStyle;   进口org.apache.poi.hssf.usermodel.HSSFSheet;   进口org.apache.poi.hssf.usermodel.HSSFWorkbook;   进口org.apache.poi.poifs.filesystem.POIFSFileSystem;   进口org.springframework.web.context.request.RequestContextHolder;   进口org.springframework.web.context.request.ServletRequestAttributes;   公共布尔exportAll (OutputStream) {   ZipOutputStream zipStream=零;   HSSFWorkbook wb=零;   尝试{   List数据=testService.getTestData ();   zipStream=new ZipOutputStream(出);//这里是把压缩流输出到httpresponse流中   (int i=0; i<3,我+ +){   世行=POIUtil.getWorkbook (i);//获取0,1,2. xls文件   HSSFSheet表=wb.getSheetAt (0);   testService.setSheet(表、数据);//砦募谌莶僮?   ZipEntry ZipEntry=new ZipEntry(新的字符串(“文件名XXX”.getBytes (),“utf - 8”) +“xls”);//自己命的名,这里假设是1、2、3   zipStream.putNextEntry (zipEntry);   wb.write (zipStream);//这里就是循环每次把execl写入zip包中   zipStream.flush ();   }   }捕捉(异常e) {   把新的SysException (ERRORConstants。COMMON_SYSTEM_ERROR e);   最后}{   尝试{   如果(wb !=null) {   wb.close ();   }   如果(zipStream !=null) {   zipStream.close ();   }   out.flush ();   out.close ();   }捕捉(IOException e) {   把新的SysException (ERRORConstants。COMMON_CLOSE_ERROR e);   }   }   }   公共静态HSSFWorkbook getWorkbook(字符串bh) {   尝试{   字符串行=File.separator;   ServletRequestAttributes aRequestAttributes=(ServletRequestAttributes) RequestContextHolder.getRequestAttributes ();   HttpServletRequest请求=aRequestAttributes==null # 63;零:aRequestAttributes.getRequest ();   字符串webpath=request.getServletContext () .getRealPath (“/?;   文件文件=新文件(webpath +线+“excel”+线+ bh +“xls”);   POIFSFileSystem POIFSFileSystem=new POIFSFileSystem(新FileInputStream(文件);   HSSFWorkbook wb=new HSSFWorkbook (poifsFileSystem);   返回白平衡;   }捕捉(异常e) {   把新SysException (ERRORConstants.COMMON_SYSTEM_ERROR e);   }   }      

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

  

  

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

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