主要用的是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批量文件压缩导出并下载到本地示例代码,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!