1. spire.doc的jar引用

首先我们需要用到国产word处理工具jar包spire.doc,可以通过maven仓库寻找,然后在pom文件中直接引用。

此处需要注意,我们需要使用的是spire.doc.free(免费版的),切勿使用spire.doc(如果使用了,处理后的word文件第一页的顶部会出现红色的警告水印信息)

如果不能直接从仓库引用到此jar,可以在仓库直接下载下来后,手动存放与本地仓库中,处理方式详见本人的另一个帖子: 本地Maven仓库导入外部jar

2. 编辑模板内容,编辑后如下(示例,仅供参考):

2.1 测试替换文字内容

/*** 替换文档中的制定文字** @param inFilePath 文件存放全路径* @param map        要替换的内容(key为要替换的内容,value为要替换成的内容)* @return 产生的新文件存放地址* @throws FileNotFoundException*/public static String replaceText(String inFilePath, Map<String, String> map) throws FileNotFoundException {Document doc = new Document(inFilePath);
//        doc.loadFromFile(inFilePath);
//        InputStream in = new BufferedInputStream(new FileInputStream(inFilePath));
//        doc.loadFromStream(in, FileFormat.Docx);map.forEach((k, v) -> {doc.replace(k, v, true, false);});String outFilePath = inFilePath.substring(0, inFilePath.lastIndexOf("."));outFilePath += "_副本.docx";doc.saveToFile(outFilePath, FileFormat.Docx);return outFilePath;}public static void main(String[] args) throws FileNotFoundException {String inFilePath = "C:\\Users\\DaiHaijiao\\Desktop/aaa.docx";Map<String, String> map = new HashMap<>(8);map.put("${name}", "张三");map.put("${car}", "配送员李四(15212345678)");map.put("${goodName}", "65寸小米电视机");map.put("${orderNo}", "NO.86418534741");map.put("${dateTime}", "2022-05-06 16:25:30");String outPath = WordUtils.replaceText(inFilePath, map);System.out.println(outPath);}

执行完后会输出新文件地址路径:

打开此文件我们可以看到内容已经替换完成了

2.2 替换图片(此处以替换那个假公章为例)

/*** 替换文档中的第一张图片** @param inFilePath 文档地址路径* @param imgPath    新图片地址* @return 产生的新文件存放地址* @throws FileNotFoundException*/public static String replaceOneImg(String inFilePath, String imgPath) throws FileNotFoundException {Document doc = new Document(inFilePath);SectionCollection sections = doc.getSections();boolean bool = false;for (int i = 0; i < sections.getCount(); i++) {if (bool) {break;}Section section = sections.get(i);ParagraphCollection paragraphs = section.getParagraphs();for (int j = 0; j < paragraphs.getCount(); j++) {if (bool) {break;}DocumentObjectCollection childObjects = paragraphs.get(j).getChildObjects();for (int k = 0; k < childObjects.getCount(); k++) {Object obj = childObjects.get(k);if (obj instanceof DocPicture) {DocPicture pic = (DocPicture) obj;pic.loadImage(imgPath);bool = true;break;}}}}String outFilePath = inFilePath.substring(0, inFilePath.lastIndexOf("."));outFilePath += "_副本.docx";doc.saveToFile(outFilePath, FileFormat.Docx);return outFilePath;}public static void main(String[] args) throws FileNotFoundException {String inFilePath = "C:\\Users\\DaiHaijiao\\Desktop/aaa.docx";String imgPath = "C:\\Users\\DaiHaijiao\\Pictures/gz.png";String outPath = WordUtils.replaceOneImg(inFilePath, imgPath);System.out.println(outPath);}

执行完后打开产生的新文件,如下图:

可以看到,原先的那个假公章已经被替换了,由于代码中的main方法没有替换相应的标识内容,所有那些并没有被修改。代码中写的是替换第一张图片(具体根据自己业务适当变通一下)

2.3 替换文档中所有指定的相同文字成指定图片,替换前的模板如下图所示:

/*** 替换文档中所有指定的相同文字成指定图片** @param inFilePath 文档地址路径* @param text       要替换的文字* @param imgPath    要替换成的图片路径* @return 产生的新文件存放地址* @throws FileNotFoundException*/public static String replaceText2Img(String inFilePath, String text, String imgPath) throws FileNotFoundException {Document doc = new Document(inFilePath);TextSelection[] allString = doc.findAllString(text, true, false);int index;for (TextSelection textSelection : allString) {DocPicture pic = new DocPicture(doc);pic.loadImage(imgPath);TextRange range = textSelection.getAsOneRange();index = range.getOwnerParagraph().getChildObjects().indexOf(range);range.getOwnerParagraph().getChildObjects().insert(index, pic);range.getOwnerParagraph().getChildObjects().remove(range);}String outFilePath = inFilePath.substring(0, inFilePath.lastIndexOf("."));outFilePath += "_副本.docx";doc.saveToFile(outFilePath, FileFormat.Docx);return outFilePath;}public static void main(String[] args) throws FileNotFoundException {String inFilePath = "C:\\Users\\DaiHaijiao\\Desktop/aaa.docx";String imgPath = "C:\\Users\\DaiHaijiao\\Pictures/mf.png";String text = "${thisImg}";WordUtils.replaceText2Img(inFilePath, text, imgPath);}

替换后如下:

Java操作Word模板产生全新内容Word相关推荐

  1. C# 操作通过word模板合并N个word文档

    C# 操作通过word模板合并N个word文档 C# 操作通过word模板合并N个word文档.在工作中遇到了这样一个工作场景,客户需要经常对上级上报或者汇报本阶段的工作, 比如:日报.周报.月总结. ...

  2. Word模板文件,替换内容 文本、图片、表格、列表、区块、嵌套等

    Word模板文件,替换内容 文本.图片.表格.列表.区块.嵌套等 实例:员工信息表Word文件,程序动态替换内容,生成pdf文件 话不多说,先看效果图! 优势: 1.模板只是布局调整,程序无需修改! ...

  3. SpringBoot集成文件 - 如何基于POI-tl和word模板导出庞大的Word文件?

    前文我们介绍了通过Apache POI通过来导出word的例子:那如果是word模板方式,有没有开源库通过模板方式导出word呢?poi-tl是一个基于Apache POI的Word模板引擎,也是一个 ...

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

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

  5. java如何根据模板填充数据生成word文档

    java根据模板填充数据生成word文档 这篇文章干什么? 思路总览 1.准备word模板 2.转换文件格式 3.编写代码 补充--下载流 这篇文章干什么?   使用代码将word模板内容进行替换,并 ...

  6. java在模板图片中填写文字,java 操作pdf模板(向指定域添加文本内容和图片)

    项目需求涉及到操作pdf模板,根据生成好的模板向里面填充数据 用到的jar包是iText-5.0.6.jar 和iTextAsian.jar 上代码: public static void main( ...

  7. C#向带有书签的word模板自动填充内容的方法

    本篇文章经过转载而来,自己在项目中进行运用,效果确实不错,推荐大家尝试! 这篇文章主要介绍了C#实现通过模板自动创建Word文档的方法,详细讲述了C#生成Word文档的实现方法,是非常实用的技巧,需要 ...

  8. python excel word模板_Python将Excel数据插入Word模板生成详细内容文档

    最近在实际工作中遇到的一个情况是,每个月固定时间要报送一批文档,文档的内容相似,有固定的模板,我这么懒的人肯定要想一个一劳永逸的办法.下面把搜索发现的情况记录一下,以备以后需要. Python有个叫做 ...

  9. 【PHPWord】PHPWord 根据word模板生成的内容动态生成目录以及页码

    文章目录 一.需求分析 二.PHPWord 中模板页码的设置 三.模板内生成目录 四.总结 一.需求分析 在实际业务中,我们可能需要根据一些比较复杂的业务模板,生成对应的Word 文件. 本文将掌握: ...

最新文章

  1. 计算机科学期刊拒稿概率大吗,发表论文初审过了复审被拒概率高不高
  2. Mysql中字段类型不一致导致索引无效
  3. CSS伪元素 after 实现鼠标悬浮信息及动画效果
  4. 辟谣|bitcoin core0.16.1版本没有删除区块大小限制——带你认识区块大小限制参数...
  5. Linux流量监控工具 – iftop
  6. MongoDB索引案例一则
  7. Spring : Spring事物支持核心接口
  8. 当前页面excel导出_系统地学习Excel第03课,Excel的工作界面
  9. PAT(B) 101-111-1-2014-03-01
  10. 如何在手机上快速制作小一寸证件照
  11. 控制面板打开后立即自动关闭
  12. unity 查找所以物体_unity中查找物体的方法
  13. 【漆天编程】MT4和MT5有什么区别?这是我见到过的最好的回答
  14. 啥是单点登陆?淘宝和天猫是如何实现同时登陆的?
  15. 走进诺奖大师系列:科斯(Ronald H.Coase)
  16. 10项最佳在线免费学习工具
  17. Vue 路由器入门指南
  18. 前端经典面试500题【下】
  19. 细小零件、产品边缘或曲面的无接触测厚技术研究
  20. 什么是性格不良?如何自我分析性格不良?

热门文章

  1. 4-20mA电流两线制温湿度变送器工作原理
  2. C++华氏温度和摄氏温度转换
  3. OSChina 周一乱弹 ——理科生都是心灵鸡汤的克星
  4. 从零搭建 webpack4+react 脚手架
  5. IDA*对A*的改进
  6. 《论文阅读》Neural Approaches to Conversational AI(2)
  7. MEC硬件加速技术分析
  8. python 吃豆人_pacman 人工智能编程 吃豆人小游戏 可实现智能寻路 吃豆 通关 - 下载 - 搜珍网...
  9. Verilog学习之路
  10. 简略版本MVC框架JWork的实现