java多个word文件压缩并导出zip

具体导出word功能和下图的downLoadFile方法,请参考:https://blog.csdn.net/sumengnan/article/details/105947476

下面主要说的是压缩zip文件。

    /**
     * 导出全部简历
     *
     * @param response
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/exportAllResume", method = {org.springframework.web.bind.annotation.RequestMethod.GET, org.springframework.web.bind.annotation.RequestMethod.POST})
    public void exportAllResume(@ModelAttribute AdjustAbilityPersonModel model, HttpServletResponse response, @CookieValue(value = SessionManager.SESSION_NAME) String sessionId) throws Exception {
        ZipOutputStream zos=null;
        ByteArrayOutputStream arrayOutputStream=null;
        try {
            response.reset();
            response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
            response.setHeader("Content-Disposition", "attachment;filename=" +new String("全部简历".getBytes("GB2312"),"iso-8859-1")+".zip");
            zos = new ZipOutputStream(response.getOutputStream());//压缩文件输出流
            arrayOutputStream= new ByteArrayOutputStream();//ByteArray临时存储流
            //查询要导出的列表
            SysUser user = userSessionManager.getUser(sessionId);
            List<AdjustAbilityPerson> list = adjustAbilityPersonService.findAll(model);
            for (AdjustAbilityPerson bean : list) {
                try {
                    XWPFDocument xwpfDocument = this.downLoadFile(response, bean, templateDir, user);
                    //获取已经替换好的word对象。downLoadFile方法,请参考:https://blog.csdn.net/sumengnan/article/details/105947476 第四步
                    String sysGroup=(bean.getSysGroup() != null?bean.getSysGroup().getName():"");
                    String userName=(bean.getUserName() != null?bean.getUserName():"");
                    zos.putNextEntry(new ZipEntry(sysGroup+"-"+userName+"简历.docx"));
                    //放入zipEntry实体,取一个名字
                    arrayOutputStream.reset();//重置ByteArray流(为了重复使用)
                    xwpfDocument.write(arrayOutputStream);//把word对象内容写到ByteArray流临时存储
                    zos.write(arrayOutputStream.toByteArray());//把ByteArray流内容写入zip输出流
                } catch (Exception e) {
                    log.warn("导出简历失败id:"+bean.getId(),e);
                }
            }
        } catch (Exception e) {
            log.error("导出全部简历失败",e);
        } finally {
            if(zos!=null){
                zos.closeEntry();//关闭zipEntyp
                zos.flush();//刷新zip输出流缓冲区
                zos.close();//关闭zip输出流
            }
            if(arrayOutputStream!=null){
                arrayOutputStream.close();//关闭ByteArray流
            }
        }
    }

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值