生成word方法可以参考
链接: https://blog.csdn.net/qq_40977118/article/details/106918521.
这里需要修改controller,将循环生成的word下载到指定文件夹下,然后将完全限定名放入list中,最后将list中所有文件打成zip包下载

package com.example.demo.controller;import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;import com.example.demo.util.CustomXWPFDocument;
import com.example.demo.util.WordUtil;import ch.qos.logback.core.util.FileUtil;/*** word导出*/
@RestController
public class ExportWordController {@RequestMapping(value = "/export")public void export(HttpServletRequest request) throws Exception{WordUtil xwpfTUtil = null;FileOutputStream os = null;InputStream is = null;List<String> files = new ArrayList<>();for (int i = 0; i < 2; i++) {xwpfTUtil = new WordUtil();Map<String, Object> params = new HashMap<>();params.put("${Name}", "Fisher3652");params.put("${Sex}", "男");params.put("${Desc}", "18岁\tJAVA开发\r熟悉JVM基本原理");params.put("${@Pic}", "C:\\Users\\111\\Pictures\\123.jpg");CustomXWPFDocument doc;is = FileUtil.class.getClassLoader().getResourceAsStream("static/Demo.docx");doc = new CustomXWPFDocument(is);xwpfTUtil.replaceInPara(doc, params);xwpfTUtil.replaceInTable(doc, params);String realPath = request.getSession().getServletContext().getRealPath("/");String parentPath = new File(realPath).getParent() + "/table" ;File dir = new File(parentPath);if (!dir.exists()) {dir.mkdirs();}String fileName = parentPath + "/" + i + ".docx";System.out.println(fileName);os = new FileOutputStream(fileName);files.add(fileName);doc.write(os);System.out.println("word成功生成");}xwpfTUtil.close(os);xwpfTUtil.close(is);os.flush();os.close();writeZip(files, "文件汇总");}private void writeZip(List<String> files, String zipname) throws IOException {String fileName = zipname + ".zip";ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletResponse response = servletRequestAttributes.getResponse();OutputStream os = response.getOutputStream();response.setCharacterEncoding(StandardCharsets.UTF_8.name());response.setContentType("application/x-zip-compressed");response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));ZipOutputStream zos = new ZipOutputStream(os);byte[] buf = new byte[8192];int len;for (int i = 0; i < files.size(); i++) {File file = new File(files.get(i));if (!file.isFile()) continue;ZipEntry ze = new ZipEntry(file.getName());zos.putNextEntry(ze);BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));while ((len = bis.read(buf)) > 0) {zos.write(buf, 0, len);}zos.closeEntry();}zos.closeEntry();zos.close();}}

导出结果

代码下载地址https://gitee.com/fisher3652/exportDemo.git

Java使用word模板生成多个word文件,并导出一个zip压缩包相关推荐

  1. java springboot easypoi 根据word模板生成对应的word并下载

    生成word如图 访问接口地址即可下载 具体操作如下 第一步:创建word模板 word模板如下,需要和java代码map值一一对应. 第二步:引入maven依赖 <dependency> ...

  2. Python通过word模板生成新的word文件

    功能自定义好的word文档,生成新的word文件 模块地址:https://docxtpl.readthedocs.io/en/latest/ 使用模块 docxtpl 安装方式 在线安装 pip i ...

  3. 把Excel数据填充word模板生成多份word文档

    有些事情,你想记得的就会记得.有些事情,你想忘记的就会忘记,如果忘记不了,那就不要忘记了,因为忘记是不需要努力的. Model_Car.cs代码 public class Model_Car{publ ...

  4. Java/web/jsp根据pdf模板生成荣誉证书PDF文件

    Java/web/jsp根据pdf模板生成荣誉证书PDF文件 1.前言 最近博主在开发一个大学生学分管理系统,按照对方用户的要求,他们需要一个生成PDF荣誉证书的功能. 于是Java根据pdf模板生成 ...

  5. apache poi使用例_使用java Apache poi 根据word模板生成word报表例子

    [实例简介] 使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持. 使用说明:https://b ...

  6. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

  7. 使用java Apache poi 根据word模板生成word报表

    使用java Apache poi 根据word模板生成word报表 使用poi读取word模板,替换word中的{text}标签,并根据自定义标签循环生成表格或表格中的行. 代码示例下载:https ...

  8. 【Java】使用模板生成word文档到服务器,并下载

    前台js只需要一个方法, 1.Action:说明:dataMap是需要展示的数据, String rootPath = SaveFileUtil.FILE_PATH;此处是为了判断盘符的,win系统和 ...

  9. java 根据word模板生成word文件

    Java可以使用Apache POI库来生成Word文件,并且也可以使用freemarker等模板引擎来实现根据Word模板生成Word文件的功能. 下面是一个简单的示例代码,可以帮助您快速入门. 模 ...

  10. java利用Freemarker模板生成docx格式的word文档(全过程)

    参考汇总: wordexport: JAVA生成并导出Word文档技术论证 java利用Freemarker模板生成docx格式的word文档(全过程) - 旁光 - 博客园 # 参考资料 - 其他项 ...

最新文章

  1. gin中间件中使用Goroutines
  2. 麦肯锡发布《中国互联网公司崛起报告》
  3. 全国计算机等级考试题库二级C操作题100套(第21套)
  4. RelativeDateFormat时间计算工具类
  5. redis集群的配置
  6. linux 解压文件zip格式
  7. GCD(Grand Central Dispatch)和Block 使用-浅析
  8. daemonset怎么读_DaemonSet 与 StatefulSet的使用
  9. CentOS 7 安装OpenOffice并实现WordToPDF(Java调用)
  10. vim的学习笔记(3)
  11. Icode编程>>>图形化编程>>>1级训练场>>>重复执行入门
  12. 如何修改iphone服务器,iPhone手机配置教程
  13. matlab两表格合并,在matlab中将两个单元合并到一个单个单元中(merge two cell in one single cell in matlab)...
  14. 设置excel中数据有效性不被复制黏贴破坏
  15. javascript网页特效(一)
  16. 计算机网络-哈尔滨工业大学mooc-第2周作业解答
  17. 基于matlab 宗晓萍,宗晓萍 - 河北大学 - 电子信息工程学院
  18. 两大「宇宙中心」之争:未来科技城如何一步步落后奥体?
  19. 解决雷电模拟器上Xposed框架不能用的问题。
  20. 图像处理里面调色板(Palette)是什么意思?

热门文章

  1. 什么是计算机的用户名和密码,电脑用户名是什么意思
  2. 人生就是一个领域,一份爱,一杯茶
  3. 2020年好用的BI应用排行榜
  4. 小鸟壁纸 删除 卸载 流氓 鲁大师 360 软件 弹窗 后台
  5. 稳压二极管和雪崩二极管的工作原理及选型学习总结
  6. 表格如何把边框线条加粗
  7. 12306验证码识别
  8. 【读书笔记】计算广告(第3部分)
  9. DNSPOD实现DDNS动态域名解析功能
  10. 0ctf-2017-babyheap图解