依赖

  <!--word操作工具类--><dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.6.0-beta1</version></dependency><!--poi对excel2007以上版本的支持 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.1.0</version></dependency>

代码

package com.joezj.util;import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;import javax.validation.constraints.NotNull;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Map;/*** Word导出工具类(将查询数据填充到模板导出)** @author: Zheng Jie* @version: $ WordExportUtil, V1.0 2020年12月12日 0:32 Zheng Jie Exp $*/
public class WordExportUtil {/** 模板所在包 */private static String TEMPLATE_PACKAGE = "wordTemplate/";/*** <p>*     导出模板到输出流中* <ul>* <li> templateName —— 模板文件名称* <ul>* <li> 模板文件名称:   book.docx* <li> 入参:          "book.docx"* </ul>* <li> dataMap —— 待填充数据* dataMap一般与实体对应,其中key对应模板中占位符字符,如:* <ul>* <li> 实体类属性:String name = "张三";* <li> 模板占位符:姓名:{{name}}* </ul>* <li> outStream —— 输出流,如:response.getOutputStream()* </ul>*</p>* @param templateName 项目webapp/wordTemplate目录下模板文件名称* @param dataMap 需要填充进模板的数据* @param outStream 需要被写入的流* @throws IOException*/public static void exportWordToStream(@NotNull String templateName,@NotNull Map dataMap,@NotNull OutputStream outStream) throws IOException {XWPFTemplate xwpfTemplate = null;try{// 配置Configure config = Configure.newBuilder().build();// 1. 在tomcat环境下模板存放于webapp时,读取webapp目录路径作为起点// String path = IOUtil.webappDirPath();// 2. 模板存放于Rsource路径下String path = IOUtil.classesDirPath();path = path + TEMPLATE_PACKAGE  + templateName;InputStream stream = new FileInputStream(new File(path));// 编译模板,填充数据xwpfTemplate = XWPFTemplate.compile(stream, config).render(dataMap);xwpfTemplate.write(outStream);}catch (IOException e){throw new RuntimeException("生成文件失败!");}finally {if(xwpfTemplate != null){xwpfTemplate.close();}}}/*** <p>*     导出模板到输出指定路径* <ul>* <li> templateName —— 模板文件名称* <ul>* <li> 模板文件名称:   book.docx* <li> 入参:          "book.docx"* </ul>* <li> dataMap —— 待填充数据* dataMap一般与实体对应,其中key对应模板中占位符字符,如:* <ul>* <li> 实体类属性:String name = "张三";* <li> 模板占位符:姓名:{{name}}* </ul>* <li> destDirPath —— 目标存放目录,如:C:\Users\Joe\Desktop\* </ul>*</p>* @param templateName 项目webapp/wordTemplate目录下模板文件名称* @param dataMap 需要填充进模板的数据* @param destDirPath 目标存放目录* @throws IOException*/public static void exportWordToPath(@NotNull String templateName,@NotNull Map dataMap,@NotNull String destDirPath) throws IOException {XWPFTemplate xwpfTemplate = null;try{// 配置Configure config = Configure.newBuilder().build();// 1. 在tomcat环境下模板存放于webapp时,读取webapp目录路径作为起点// String path = IOUtil.webappDirPath();// 2. 模板存放于Rsource路径下String path = IOUtil.classesDirPath();path = path + TEMPLATE_PACKAGE  + templateName;InputStream stream = new FileInputStream(new File(path));// 编译模板,填充数据xwpfTemplate = XWPFTemplate.compile(stream, config).render(dataMap);xwpfTemplate.writeToFile(destDirPath);}catch (IOException e){throw new RuntimeException("生成文件失败!");}finally {if(xwpfTemplate != null){xwpfTemplate.close();}}}
}
package com.joezj.util;import java.io.InputStream;/*** IO工具类** @author: Zheng Jie* @version: $ IOUtil, V1.0 2020年12月02日 16:19 Zheng Jie Exp $*/
public class IOUtil {/*** 获取运行时类根目录路径* @return 运行时类根目录路径*/public static String classesDirPath(){Object object = new Object();return object.getClass().getResource("/").getPath().replaceFirst( "/" ,  "" );}/*** 获取运行时webapp目录路径* @return 运行时webapp目录路径*/public static String webappDirPath(){return classesDirPath().replaceAll( "WEB-INF/classes/" ,  "" );}
}

测试

import java.io.IOException;
import java.util.HashMap;public class ceshi {public static void main(String[] args) throws IOException {String templateName = "proposal-meeting.docx";HashMap<String, Object> map = new HashMap<>();map.put("org", "1234比好1");String destDirPath = "E:\\other\\jieguo.docx";WordExportUtil.exportWordToPath(templateName, map, destDirPath);}
}

参考

文章

poi填充word(poi-tl)相关推荐

  1. Java使用Poi填充Word表格模板(图片和文字)

    Java使用Poi填充Word表格模板(图片和文字) **** 由于个人需求需要对表格模板进行操作,所以本文章只对表格进行替换数据操作,没有段落,没有循环遍历,没有延伸!!!!!(后续补充!!!) * ...

  2. java poi word 复制_Java 使用POI填充Word表格内容和复制模板行属性方法示例代码

    1、填充Word表格内容/** * 循环填充表格内容 * @param xwpfDocument * @param params * @param tableIndex * @throws Excep ...

  3. java poi 填充word(合并单元格,添加图片,设置字号)

    /** * 查询Word报表** @param* @return*/ @RequestMapping(value = "/wordQuery") public BaseRespon ...

  4. 利用poi向word模板填充数据

    java基于POI实现向word模板填充数据 在做项目的时候遇到需要将多张表单导出为word,就想到了这个方法. 注意:XWPFDocument不支持doc类型文档,做模板的时候要另存为docx. 示 ...

  5. org.apache.poi往word模板中填充数据(word2003)

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.通过字面意思,我们大概知道这个API是可以用来做 j ...

  6. POI操作word填充数据,合并多个word为一个,遇到一些问题的解决

    POI操作word填充数据,合并多个word为一个,遇到一些问题的解决 最近搞一个向word模板中替换占位符 填充数据,然后将多个word合并在一起的方法.网上一搜有很多资料,现在在这儿对过程中遇到的 ...

  7. 记录java使用POI实现word模板数据填充

    一.前言 最近项目遇到个需求,在模板中填充数据,刚开始是用smartBi报表进行填充,输出参数都是必录,无法满足需求.在网上查了很多资料,有些需要把文档转成xml格式修改里面内容,IDEA里面修改要替 ...

  8. java poi读取word中附件_java用poi实现对word读取和修改操作

    java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...

  9. java poi 操作word遇到的问题

    java poi 操作word文本,图表,遇到的问题 直接上问题 模板字段匹配问题 图表问题 图表导出 问题:模板找不到对应图表 问题:数据填充后效果不达目标 图表中为零的数值去掉(!!!模板层面解决 ...

最新文章

  1. Gitlab服务器搭建
  2. 尚硅谷_Ajax_学习笔记
  3. java.awt.headless_以编程方式设置java.awt.headless = true
  4. android 显示清除缓存
  5. vs code 前端如何以服务器模式打开 [安装服务器] server insteall
  6. gitlab一键安装 笔记
  7. LoRa技术-什么是LoRa
  8. 上了一堂健身课,27岁程序员尿尿像酱油!
  9. 预后建模绕不开的lasso cox回归
  10. Linux上解压缩安装Mysql
  11. mq for java,MQ For JAVA学习记录
  12. 基于J2ME的游戏开发总结和感想
  13. 《单片机原理及应用(魏洪磊)》第六章第12题
  14. Java——Java语言基础
  15. 201671010412 郭佳 英文文本统计分析
  16. 商票到期不兑付逾期怎么办
  17. SAP MM模块常用的表
  18. 使用SNMP端口查找在Catalyst交换机的MAC地址
  19. [HBase进阶]--深入HBase架构解析(二)
  20. 春秋战国时代百家争鸣,大师层出不穷,例如:荀子

热门文章

  1. JQuery中removeProp()与removeAttr()的区别,You know?
  2. Java迭代器(Iterator)的用法
  3. 唱吧php文件,python解决唱吧歌词解密的问题?
  4. 安鸾靶场-LFI本地文件包含 LFI本地文件包含LF2 文件包含漏洞练习记录
  5. 树莓派4B摄像头的详细使用教程(拍照+录像+监控)
  6. 重要性抽样方法实例分享
  7. 基于python的智能语音助手下载_GitHub - tengqian/DuerOS-Python-Client: 基于DuerOS的个人的智能语音助手...
  8. uniapp - 弹出层的使用
  9. 阅读笔记-进击的学霸-策略篇-分散记忆原则
  10. win声音突然变小问题