Java批量导出word压缩后的zip文件案例

 更新时间:2020年10月01日 11:11:22   作者:Z丶royAl  
这篇文章主要介绍了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?id="+selectedRows[0].id;
    layer.close(index);
   }, function(index){
    window.location.href= "jee/AssessGradeSumC/exportWordForSpecific?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文件案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 基于Java实现一个复杂关系表达式过滤器

    基于Java实现一个复杂关系表达式过滤器

    这篇文章主要为大家详细介绍了如何基于Java实现一个复杂关系表达式过滤器。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-07-07
  • RocketMQ中消费者概念和消费流程详解

    RocketMQ中消费者概念和消费流程详解

    这篇文章主要介绍了RocketMQ中消费者概念和消费流程详解,RocketMQ是一款高性能、高可靠性的分布式消息中间件,消费者是RocketMQ中的重要组成部分,消费者负责从消息队列中获取消息并进行处理,需要的朋友可以参考下
    2023-10-10
  • 浅谈java二进制、十进制、十六进制、字符串之间的相互转换

    浅谈java二进制、十进制、十六进制、字符串之间的相互转换

    下面小编就为大家带来一篇浅谈二进制、十进制、十六进制、字符串之间的相互转换。小编觉得挺不错的,现在就分享给大家,也给大家做个参考,一起跟随小编过来看看吧
    2016-06-06
  • logback-spring.xml的配置及示例详解(直接复制粘贴可用)

    logback-spring.xml的配置及示例详解(直接复制粘贴可用)

    在使用logback作为日志框架时,可以创建一个名为logback-spring.xml的配置文件来自定义日志输出的格式和方式,下面这篇文章主要给大家介绍了关于logback-spring.xml的配置及示例详解的相关资料,文中的代码直接复制粘贴可用,需要的朋友可以参考下
    2024-01-01
  • 关于Java中的IO流总结(推荐)

    关于Java中的IO流总结(推荐)

    下面小编就为大家带来一篇关于Java中的IO流总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • spring boot 使用Mybatis-plus查询方法解析

    spring boot 使用Mybatis-plus查询方法解析

    这篇文章主要介绍了spring boot 使用Mybatis-plus查询方法解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • BeanFactory和FactoryBean的区别示例详解

    BeanFactory和FactoryBean的区别示例详解

    这篇文章主要为大家介绍了BeanFactory和FactoryBean的区别示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 详解SpringMVC组件之HandlerMapping(一)

    详解SpringMVC组件之HandlerMapping(一)

    这篇文章主要介绍了详解SpringMVC组件之HandlerMapping(一),HandlerMapping组件是Spring MVC核心组件,用来根据请求的request查找对应的Handler,在Spring MVC中,有各式各样的Web请求,每个请求都需要一个对应的Handler来处理,需要的朋友可以参考下
    2023-08-08
  • MybatisPlus实现简单增删改查功能

    MybatisPlus实现简单增删改查功能

    这篇文章主要介绍了MybatisPlus实现简单增删改查的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • SpringCloud Config使用配置方法

    SpringCloud Config使用配置方法

    这篇文章给大家介绍SpringCloud Config使用及构建配置中心的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07

最新评论