代码

package com.nj.uu.base.component.poi;import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.usermodel.*;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** <pre>*     WordFillUtil* </pre>** @author qhs* @version 1.0* @date 2020/09/11 13:00:37*/
@Slf4j
public class WordFillUtil {public static void main(String[] args) throws IOException {Map<String, Object> map = new HashMap<>();map.put("name", "张三");fillInTableMedian("d://a.docx", "d://b.docx", map);}/*** 填充表格中值并生成文件* <p>* desc:* <span>1.模板只支持docx格式<span/>* <span>2.模板表格中单列只能填写标识key&&只能填写一个<span/>* <p/>** @param path    word模板地址 填充值标识key ${key}(唯一)* @param data    填充数据 key|value name=zhangsan* @param outPath*/public static void fillInTableMedian(String path, String outPath, Map<String, Object> data) throws IOException {//加载文件操作对象try (FileInputStream is = new FileInputStream(path); XWPFDocument document = new XWPFDocument(is)) {//获取文件表格List<XWPFTable> tableList = document.getTables();//遍历for (XWPFTable xwpfTable : tableList) {//行for (XWPFTableRow xwpfTableRow : xwpfTable.getRows()) {//列for (XWPFTableCell xwpfTableCell : xwpfTableRow.getTableCells()) {// cell textString text = xwpfTableCell.getText();//是否填充if (isItFilled(text)) {//段落for (XWPFParagraph xwpfParagraph : xwpfTableCell.getParagraphs()) {//获取段落中所有文本List<XWPFRun> runs = xwpfParagraph.getRuns();//clean 段落文本值for (XWPFRun run : runs) {run.setText("", 0);}//设置段落中文本runs.get(0).setText(data.get(getKey(text)).toString());}}}}}//写出try (FileOutputStream out = new FileOutputStream(outPath)) {document.write(out);}}}/*** 填充前缀*/private static final String FILL_PREFIX = "${";/*** 填充后缀*/private static final String FILL_SUFFIX = "}";/*** 是否填充** @param text* @return*/public static boolean isItFilled(String text) {return text.contains(FILL_PREFIX);}/*** 获取填充标识Key** @param text* @return*/public static String getKey(String text) {return text.replace(FILL_PREFIX, "").replace(FILL_SUFFIX, "");}}

模板示例

运行示例

Java POI 实现填充Wrod模板表格内容相关推荐

  1. java POI对word中的表格动态插入固定数据,以及插入不确定数量的的数据

    java POI对word中的表格动态插入固定数据,以及插入不具体的数据 遇到个项目本来是用Execl导出的,相对简单,客户要求用Word导出,并按照他们给的模板进行导出: 从网上百度了一下,然后自己 ...

  2. java使用itext填充pdf模板,超简单教学,有手就行

    java使用itext填充pdf模板 1.先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线 2.将Word另存为pdf 3.打开电脑中的Adobe Acrobat pro DC(这 ...

  3. java读取word文档的复杂表格_poi读取word表格 java POI 如何读取word的表格中的表格...

    poi 操作word 2007 (如何删除word中的某一个表格)小编忘了哪年哪月的哪日小编在哪面墙上刻下张脸张微笑着忧伤着凝望小编的脸. public static void changeTable ...

  4. JAVA POI通用Excel导入模板

    JAVA POI通用Excel导入模板 Excel导入模板类 Excel导入模板类 package com.golte.dataform.analysis.controller;import com. ...

  5. java POI导出多张图片到表格(占位符方式)

    最近做的项目,需要将一些信息导出到word中.在网上找了好多解决方案,现在将这几天的总结分享一下. 目前来看,java导出word大致有6种解决方案: 1:Jacob是Java-COM Bridge的 ...

  6. java POI下载自定义EXCEL模板

    通过POI形成固定excel模板,然后下载 springboot添加依赖 此处引入的是easypoi依赖,也可直接引入apache的POI <!--easyPOI--><depend ...

  7. java之数据填充PDF模板

    1.既然要使用PDF模板填充,那么就需要制作PDF模板,可以使用Adobe Acrobat DC,下载地址:https://carrot.ctfile.com/dir/11269771-2715881 ...

  8. java使用itext填充pdf模板文字和图片,并使填充后的模板内容垂直水平居中

    一.背景 由于业务需求,我需要将程序的部分数据生成PDF报告以供下载浏览 二.实现方式 设计一个pdf模板,可以通过pdf编辑工具编辑模板.市面上支持编辑表单的pdf编辑都可以,如Adobe Acro ...

  9. java poi 读word (doc,docx)表格

    项目场景: 最近公司将线下流程线上话,提供上传模板的功能,很多表格都是在word里面生成的,找了很多资料处理docx 跟doc 最后docx 勉强可以用,doc还是不完善,最后只能沟通 限制上传doc ...

最新文章

  1. Isomorphic Strings
  2. stl list(转)
  3. 我的年龄又快被5整除了......
  4. Leetcode题库 144.二叉树的前序遍历(递归 C实现)
  5. 截取指定字符前_VBA学习笔记35-1:字符串拆分与组合
  6. 10年老电脑如何提速_电脑越用越卡?如何简单升级,让你的旧笔记本瞬间提速...
  7. linux上安装fio教程,fio工具安装及使用
  8. linux 分卷解压
  9. Number 和 Math 类
  10. 查询一个ID出现2种结果的情况
  11. 例子---随机数/不重复的随机数
  12. 西瓜书+实战+吴恩达机器学习(十八)降维(主成分分析 PCA)
  13. 使用Android OpenGL ES 2.0绘图之二:定义形状
  14. 轻便的客户端本地文件数据库 SQLite
  15. 一套小程序源码多少钱_微信点餐小程序怎么做,微信扫码点餐系统多少钱一套?...
  16. 《Java 8实战》读书笔记
  17. 开源办公套件LibreOffice
  18. 如何安装GlobalMapper
  19. 诺贝尔获奖者中村修二:东亚教育问题的根源在哪?
  20. tp5 获取当前的url方法

热门文章

  1. 当对象不理你的时候如何用让她理你
  2. 四方通讯主机IEC104通讯
  3. fir.im Weekly - 热门 iOS 第三方库大盘点
  4. JAVA内存结构和JAVA内存模型
  5. 【词性的选择与所放位置练习题】but vs however
  6. windows系统配置redis密码
  7. LT8910 2.4 GHZ无线收发器芯片LDT
  8. 2021年N1叉车司机复审考试及N1叉车司机复审模拟考试
  9. [附源码]计算机毕业设计JAVA日常饮食健康推荐系统
  10. Mysql-时间差计算(分钟)