poi填充word(poi-tl)
依赖
<!--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)相关推荐
- Java使用Poi填充Word表格模板(图片和文字)
Java使用Poi填充Word表格模板(图片和文字) **** 由于个人需求需要对表格模板进行操作,所以本文章只对表格进行替换数据操作,没有段落,没有循环遍历,没有延伸!!!!!(后续补充!!!) * ...
- java poi word 复制_Java 使用POI填充Word表格内容和复制模板行属性方法示例代码
1、填充Word表格内容/** * 循环填充表格内容 * @param xwpfDocument * @param params * @param tableIndex * @throws Excep ...
- java poi 填充word(合并单元格,添加图片,设置字号)
/** * 查询Word报表** @param* @return*/ @RequestMapping(value = "/wordQuery") public BaseRespon ...
- 利用poi向word模板填充数据
java基于POI实现向word模板填充数据 在做项目的时候遇到需要将多张表单导出为word,就想到了这个方法. 注意:XWPFDocument不支持doc类型文档,做模板的时候要另存为docx. 示 ...
- org.apache.poi往word模板中填充数据(word2003)
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.通过字面意思,我们大概知道这个API是可以用来做 j ...
- POI操作word填充数据,合并多个word为一个,遇到一些问题的解决
POI操作word填充数据,合并多个word为一个,遇到一些问题的解决 最近搞一个向word模板中替换占位符 填充数据,然后将多个word合并在一起的方法.网上一搜有很多资料,现在在这儿对过程中遇到的 ...
- 记录java使用POI实现word模板数据填充
一.前言 最近项目遇到个需求,在模板中填充数据,刚开始是用smartBi报表进行填充,输出参数都是必录,无法满足需求.在网上查了很多资料,有些需要把文档转成xml格式修改里面内容,IDEA里面修改要替 ...
- java poi读取word中附件_java用poi实现对word读取和修改操作
java编程要实现对word的操作没有vb那种编程语言来得容易,得借助一些开源组件,其中就包括jacob.poi等, 而poi应用得最为广泛,对word2003和2007的读和写word操作都十分方便 ...
- java poi 操作word遇到的问题
java poi 操作word文本,图表,遇到的问题 直接上问题 模板字段匹配问题 图表问题 图表导出 问题:模板找不到对应图表 问题:数据填充后效果不达目标 图表中为零的数值去掉(!!!模板层面解决 ...
最新文章
- Gitlab服务器搭建
- 尚硅谷_Ajax_学习笔记
- java.awt.headless_以编程方式设置java.awt.headless = true
- android 显示清除缓存
- vs code 前端如何以服务器模式打开 [安装服务器] server insteall
- gitlab一键安装 笔记
- LoRa技术-什么是LoRa
- 上了一堂健身课,27岁程序员尿尿像酱油!
- 预后建模绕不开的lasso cox回归
- Linux上解压缩安装Mysql
- mq for java,MQ For JAVA学习记录
- 基于J2ME的游戏开发总结和感想
- 《单片机原理及应用(魏洪磊)》第六章第12题
- Java——Java语言基础
- 201671010412 郭佳 英文文本统计分析
- 商票到期不兑付逾期怎么办
- SAP MM模块常用的表
- 使用SNMP端口查找在Catalyst交换机的MAC地址
- [HBase进阶]--深入HBase架构解析(二)
- 春秋战国时代百家争鸣,大师层出不穷,例如:荀子
热门文章
- JQuery中removeProp()与removeAttr()的区别,You know?
- Java迭代器(Iterator)的用法
- 唱吧php文件,python解决唱吧歌词解密的问题?
- 安鸾靶场-LFI本地文件包含 LFI本地文件包含LF2 文件包含漏洞练习记录
- 树莓派4B摄像头的详细使用教程(拍照+录像+监控)
- 重要性抽样方法实例分享
- 基于python的智能语音助手下载_GitHub - tengqian/DuerOS-Python-Client: 基于DuerOS的个人的智能语音助手...
- uniapp - 弹出层的使用
- 阅读笔记-进击的学霸-策略篇-分散记忆原则
- win声音突然变小问题