操作docx文件,设置需要更改的地方使用占位符,讲docx文件后缀改为.zip。打开压缩文件找到内容xml文件(我的文件路径是word\document.xml,如果有不一样的可以大神留言)。
打开xml文件如果占位符被拆分,更改xml保证占位符完整
1.打开模板文件,并下载

     String fileName = "文件名";//将文件放在public资源问价夹下ClassPathResource classPathResource = new ClassPathResource("public" + File.separator + "xxx.zip");//组装占位符-值Map<String, String> map = findRecord(po);//打开zip压缩文件ZipFile zipFile = new ZipFile(classPathResource.getFile());ZipOutputStream outputStream = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));//设置response请求头response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8") + ".docx");//更新zip内的xml信息updateZipFile(zipFile, outputStream, "word/document.xml", map);//关流zipFile.close();outputStream.flush();outputStream.close();

updateZipFile方法

 public void updateZipFile(ZipFile zipFile, ZipOutputStream zipOutputStream, String fileName, Map<String, String> params) throws IOException {//遍历压缩文件for (Enumeration e = zipFile.entries(); e.hasMoreElements(); ) {ZipEntry entryIn = (ZipEntry) e.nextElement();//将原始压缩文件中的文件,添加到输出流中zipOutputStream.putNextEntry(new ZipEntry(entryIn.getName()));InputStream is = zipFile.getInputStream(entryIn);byte[] buf = new byte[1024];int len;//判断文件是否是document.xml文件if (!entryIn.getName().equalsIgnoreCase(fileName)) {//如果不是直接添加while ((len = is.read(buf)) > 0) {zipOutputStream.write(buf, 0, (len < buf.length) ? len : buf.length);}} else {//如果是,编辑xml文件while ((len = (is.read(buf))) > 0) {//设置中文编码格式,控制中文编码解决中文转byte数组时损失String s = new String(buf, "ISO-8859-1");//遍历占位符-值,替换xml中的占位符for (Map.Entry<String, String> entry : params.entrySet()) {if (s.indexOf(entry.getKey()) != -1) {s = s.replace(entry.getKey(), new String(entry.getValue().getBytes("UTF-8"), "ISO-8859-1"));len = s.getBytes("ISO-8859-1").length;}}byte[] outByte = s.getBytes("ISO-8859-1");//添加到输出流zipOutputStream.write(outByte, 0, (len < outByte.length) ? len : outByte.length);}}//关流is.close();}}

JAVA操作docx文档相关推荐

  1. Java操作word文档将docx转换为pdf格式

    Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...

  2. pythondocx模板_python操作docx文档(转)

    关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很出名的一个工具"pa ...

  3. Python操作docx文档设置居中并创建表格

    功能描述:本文代码使用python-docx操作docx文档,添加一段文字并设置居中对齐,添加一个表格并为所有单元格设置文字. from docx import Document from docx. ...

  4. Java操作Word文档

    Java 生成 Word 的几种方案 参考 ​ 主要有这么一些工具可以使用 Jacob.Apache POI.Java2word.iText,还有一种方法是使用XML作为模板. ​ 使用 XML 的思 ...

  5. Java web--利用java操作excel文档

    在web应用程序的开发中,如果需要将Excel文档中的信息导入数据库或将数据库的信息导出到Excel文档中,需要应用程序访问Excel文件.目前,操作Excel文档的java组件主要有Jxl和POI两 ...

  6. java操作word文档(文字,图片,表格添加以及替换操作)

    注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...

  7. Java 操作 word 文档 (三)段落Paragraphs,文本加粗、斜体、字体、字体大小、复杂文本

    目录 1.段落标签 2.引入 docx4j 2.1 引入 docx4j 的 maven 依赖 2.2 加载文档 2.3 获取段落中的文本 3.<w:r> 的属性 4.设置文本字体与大小 4 ...

  8. spire.doc 让java操作word文档更简单优雅

    Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建.读取.编辑.转换和打印等功能集成到自己的 Java 应用程序中.作为一款完 ...

  9. C# 操作docx文档

    一.需要引用DocX类库文件,可以直接在NuGet中找到. 二.创建文件,并添加一张表格 public static string fileName = AppDomain.CurrentDomain ...

  10. Java操作Word文档添加水印(文字/图片)

    水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法. 使用工具:Free Spire.Doc for Ja ...

最新文章

  1. 数字图像基本处理算法小结
  2. JVM---执行引擎
  3. smartfoxserver 个人心得
  4. 树莓派:django,uwsgi,nginx安装与设置
  5. python中csv文件通过什么表示字符_python – 如果行包含CSV文件中的字符串,则删除该行...
  6. win2008 mysql_mysql5.7.17在win2008R2的64位系统安装与配置实例
  7. Codeforces 1167E 尺取法
  8. 【MiniSTM32_HAL库版本_V1.0】实验1跑马灯代码解释(超详细,适合初识STM32的朋友)
  9. java crc8_Crc8算法
  10. 领域驱动模型设计(一)
  11. Codechef April Challenge 2019 游记
  12. Word 分节设置不同起始页码
  13. oracle cogs 科目,OM模块关于COGS的生成
  14. STAF 删除文件操作
  15. 十大优秀编程项目,让你的简历金光闪闪
  16. 沉痛悼念游戏开发技术专家毛星云(网名“浅墨”)
  17. 用山脊图展示后验分布
  18. 定语状语异同 限定和修饰关系 句子结构(修饰和被修饰)
  19. 苹果cmsv10仿91美剧网自适应收录好的免费模板
  20. Spring Cloud 入门教程(二): 配置管理

热门文章

  1. 线性判别分析(Linear Discriminant Analysis,LDA)
  2. 全国大学生数学竞赛(非数学专业)习题精讲等相关资源
  3. 用SET工具包制作钓鱼网站
  4. 计算机思维和应用技术,计算机的思维与计算机应用关系分析
  5. Ansible的安装和全面介绍
  6. Hadoop3.1.3搭建集群
  7. R语言使用strsplit函数按照指定的分隔符号进行数据拆分、分裂(split)、分割后的数据类型为列表
  8. 用户画像标签体系建设指南
  9. python自动化英语查词
  10. 弹性法计算方法的mck法_弹性的计算方法