温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java实现批量导出word压缩后的zip文件

发布时间:2020-10-29 16:33:44 来源:亿速云 阅读:333 作者:Leah 栏目:开发技术

本篇文章为大家展示了Java实现批量导出word压缩后的zip文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、js代码,由于参数比较大所以利用form表单使用post导出

  function export_word(){
    var selectedRows = $("#dg").datagrid("getSelections");
    if (selectedRows.length==0) {
      showAlertWarning("请选择一条的信息...");
      return;
    }
    if (selectedRows.length > 1) {//批量导出压缩文件
      var id = "";
      for (var i = 0; i < selectedRows.length; i++) {
        var row = selectedRows[i];
        id += row.id+"name"+row.user_name+"@@";
      }
      layer.confirm('请选择要导出考核表的类型?', {
        btn: ['次数','具体条目'] //按钮
      }, function(index){
        postExportFile({"id":id,"type":0},"jee/AssessGradeSumC/exportWordsZip");
        layer.close(index);
      }, function(index){
        postExportFile({"id":id,"type":1},"jee/AssessGradeSumC/exportWordsZip");
      });
    } else {//导出单个
      layer.confirm('请选择要导出考核表的类型?', {
        btn: ['次数','具体条目'] //按钮
      }, function(index){
        window.location.href= "jee/AssessGradeSumC/exportWord&#63;id="+selectedRows[0].id;
        layer.close(index);
      }, function(index){
        window.location.href= "jee/AssessGradeSumC/exportWordForSpecific&#63;id="+selectedRows[0].id;
      });
    }
  }
 
  function postExportFile(params, url) { //params是post请求需要的参数,url是请求url地址
    var form = document.createElement("form");
    form.style.display = 'none';
    form.action = url;
    form.method = "post";
    document.body.appendChild(form);
 
    for(var key in params){
      var input = document.createElement("input");
      input.type = "hidden";
      input.name = key;
      input.value = params[key];
      form.appendChild(input);
    }
 
    form.submit();
    form.remove();
  }

二、controller代码(读完压缩文件后删除文件)

 /**
 *
 * @Description 考核成绩汇总考核表批量导出压缩
 * @Fcunction exportWordsZip
 * @param response
 * @return ReturnDatas
 *
 */
 @ResponseBody
 @SystemControllerLog(description = "考核成绩汇总考核表批量导出压缩")
 @RequestMapping(value = "exportWordsZip")
 public ReturnDatas exportWordsZip(HttpServletResponse response, String id, String type) {
 ReturnDatas returnDatas = ReturnDatas.getSuccessReturnDatas();
 try {
  response.setCharacterEncoding("UTF-8");
  response.setContentType("application/msexcle");
  response.setHeader("content-disposition", "attachment;filename=" + new String("考核成绩汇总表".getBytes("gb2312"), "ISO8859-1") + ".zip");
  String fileUrl = assessGradeSumService.exportWordsZip(id,type);
  OutputStream outputStream = response.getOutputStream();
  BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileUrl));;
  BufferedOutputStream bos = new BufferedOutputStream(outputStream);
  byte[] buff = new byte[2048];
  int bytesRead;
  while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
  bos.write(buff, 0, bytesRead);
  }
  bis.close();
  bos.close();
  outputStream.close();
  File zip = new File(fileUrl);
  if (zip.exists() && zip.isFile()) {
  zip.delete();
  }
  return returnDatas;
 } catch (Exception e) {
  e.printStackTrace();
  LogUtil.error("考核成绩汇总考核表批量导出压缩异常:" + e.getMessage(), e);
  returnDatas.setStatus(ReturnDatas.ERROR);
  returnDatas.setMessage("考核成绩汇总考核表批量导出压缩异常。");
 }
 return returnDatas;
 }

三、实现类代码,其中exportWord()和exportWordForSpecific()都是具体的word导出方法,生成zip压缩文件后删除word文件,ZipUtils是压缩文件工具类

/**
 *
 * @Fcunction exportWordsZip
 * @param id
 * @param type
 * @return String
 *
 */
 @Override
 public String exportWordsZip(String id, String type)throws Exception{
 String[] ids = id.split("@@");
 List<File> fileList = new ArrayList<>();
 String url = "C:\\";
 for (int i = 0; i < ids.length; i++) {
  String id_name = ids[i];
  String id_value = id_name.split("name")[0];
  String name = id_name.split("name")[1];
  String docUrl = url + name + ".doc";
  fileList.add(new File(docUrl));
  XWPFDocument workbook = null;
  if ("0".equals(type)) {//按次
  workbook = exportWord(id_value);
  } else {//表单条目
  workbook = exportWordForSpecific(id_value);
  }
  FileOutputStream out = new FileOutputStream(docUrl);
  workbook.write(out);
 }
 String zipUrl = url+"考核成绩汇总表.zip";
 FileOutputStream fos = new FileOutputStream(new File(zipUrl));
 ZipUtils.toZip(fileList, fos);
 for (File out:fileList) {
  if (out.exists() && out.isFile()) {
  out.delete();
  }
 }
 return zipUrl;
 }

上述内容就是Java实现批量导出word压缩后的zip文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI