1、poi-tl是什么
poi-tl是一个基于Apache POI的Word模板引擎,同时它也是一个免费开源(github地址)的Java类库,给Java程序员带来了word处理上的便捷。
2、官方介绍
在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海。
2.1 poi-tl与其他word模板引擎的对比
方案 | 移植性 | 功能性 | 易用性 |
---|---|---|---|
Poi-tl | Java跨平台 | Word模板引擎 | 基于Apache POI,更友好的API |
Apache POI | Java跨平台 | Apache项目,不仅封装了易用的文档API(文本、图片、表格、页眉、页脚、图表等),也可以在底层直接操作XML结构 | 文档不全,这里有一个教程:Apache POI Word快速入门 |
Freemarker | XML跨平台 | 仅支持文本,很大的局限性 | 不推荐,需要维护XML结构,代码后期不可维护 |
OpenOffice | 部署OpenOffice,移植性较差 | - | 需要了解OpenOffice的API |
HTML浏览器导出 | 依赖浏览器的实现,移植性较差 | HTML不能很好的兼容Word的格式 | - |
Jacob、winlib | Windows平台 | - | 复杂,完全不推荐使用 |
2.2 poi-tl的编码模式
TDO模式: Template + data-model = output
2.2.1 Template—模板
模板即Docx格式的Word文档
2.2.2 Data-model—数据
数据即模板中需要替换的数据结构,类似哈希或者字典,常用Map结构,其中key即需要替换的标签
2.2.3 Output—输出
输出即最终文档的流产生,可以是文件流或网络流等
3、软件要求
- Apache POI 4.1.2
- jdk 1.8+
maven依赖
<dependency>
<groupId>com.deepoove</groupId>
<artifactId>poi-tl</artifactId>
<version>1.10.0</version>
</dependency>
4、标签
4.1 文本
标签
{
{var}}
数据模型
- String:文本
- TextRenderData:有样式的文本
- HyperlinkTextRenderData :超链接和锚点文本
- Object:调用 toString() 方法转化为文本
测试模板
测试代码
package com.lizba.poi;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.data.Texts;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
/**
* <p>
* 文本测试
* </p>
*
* @Author: Liziba
* @Date: 2021/6/24 21:49
*/
public class DocTest {
public static void main(String[] args) throws IOException {
String filePath