Java Word模板引擎-Poi-tl
本文内容从Poi-tl官方文档摘录,poi-tl是一个基于Java POI的Word模板引擎,有着非常强大的功能
此处只摘录了一些我现在需要用到的功能
文章目录
- 一、简单示例
- 1.准备一个模板文档 `template.docx`
- 2.写一个测试方法
- 二、标签
- 1.文本
- 2.列表
- 3.区块对
- 区块对应用范围
- False或空集合
- 非False且不是集合
- 非空集合
- 循环内置变量
- 4.嵌套
- 三、配置
- 1.前后缀
- 2.标签类型
- 3.标签正则
- 4.计算标签值
- 5.Spring表达式
- 6.SpringEL作为区块对的条件
- 7.错误处理
- 标签无法被计算
- 标签数据类型不合法
- 8.模板生成模板
一、简单示例
1.准备一个模板文档 template.docx
在文档中写上{{title}}
2.写一个测试方法
public class PoiTlTest01 {@Testpublic void testStart() throws IOException {XWPFTemplate template = XWPFTemplate.compile("template.docx").render(new HashMap<String,Object>(){{put("title","Hi,poi-tl Word模板引擎");}});template.writeAndClose(new FileOutputStream("output.docx"));}
}
二、标签
1.文本
{{var}}
数据模型:
String 文本
TextRenderData 有样式的文本
HyperlinkTextRenderData 超连接文本
Object 调用toString()方法转换为文本
代码示例:
put("name", "Sayi");
put("author", new TextRenderData("000000", "Sayi"));
put("link", new HyperlinkTextRenderData("website", "http://deepoove.com"));
put("anchor", new HyperlinkTextRenderData("anchortxt", "anchor:appendix1"));
除了使用上面这这种new
方法,还可以使用链式调用,使用更优雅的Text
来构建文本模型
put("name", "Sayi");
put("author", Texts.of("Sayi").color("000000").create());
put("link", Texts.of("website").link("http://deepoove.com").create());
put("anchor", Texts.of("anchortxt").anchor("appendix1").create());
TextRenderData的结构体
{"text": "Sayi","style": {"strike": false, // 删除线"bold": true, // 粗体"italic": false, // 斜体"color": "00FF00", // 颜色"underLine": false, // 下划线"fontFamily": "微软雅黑", // 字体样式"fontSize": 12, // 字体大小"highlightColor": "green", // 背景高亮色"vertAlign": "superscript", // 上标或者下标"characterSpacing" : 20 // 间距}
}
文本之间换行使用\n
2.列表
列表标签以*开始:{{*var}}
数据模型:
- NumberingReanderData
推荐使用工厂Numberings构建编号模型
示例代码:
put("list", Numberings.create("Plug-in grammar","Supports word text, pictures, table...","Not just templates"));
编号样式支持罗马字符、有序无序等,可以通过Numberings.os(NumberingFormat)
来指定
DECIMAL //1. 2. 3.
DECIMAL_PARENTHESES //1) 2) 3)
BULLET //● ● ●
LOWER_LETTER //a. b. c.
LOWER_ROMAN //i ⅱ ⅲ
UPPER_LETTER //A. B. C.
3.区块对
区块对由前后两个标签组成,开始标签以?
标识,结束标签以/
标识,如:
{{?sections}}{{/sections}}
区块对应用范围
区块对开始和结束标签中间可以包含以下内容:
- 多个图片
- 表格
- 段落
- 列表
- 图表
- 等…
其中开始和结束标签可以跨多个段落,也可以在同一个段落,但是如果在表格中使用区块对,开始和结束标签必须在同一个单元格内,因为跨多个单元格的渲染行为是未知的
。
区块对在处理一些列文档元素的时候非常有用,位于区块对中的文档元素可以被渲染零次,一次或N次,这取决于区块对的取值。
False或空集合
隐藏区块中的所有文档元素
如果区块对的值是null、false或者空的集合,位于区块中的所有文档元素将不会显示,等同于if
语句的条件为false
如下:
data-model{"announce": false
}------template.docxMade it,Ma!{{?announce}}Top of the world!{{/announce}}Made it,Ma!{{?announce}}Top of the world!
Java Word模板引擎-Poi-tl相关推荐
- Word 模板引擎 poi-tl
poi-tl基于Microsoft Word模板和数据生成新的Word文档,可能是Java中最好的Word模板引擎 全方位支持Word批注功能 图片支持SVG.Base64,支持自动识别各种图片类型 ...
- 排名第一的word模板引擎,到底有多神仙
hello大家好,今天我要给大家推荐一个非常棒的Word专用的模板引擎,Poi-tl(Poi-template-language).这款引擎基于Apache Poi,可以根据用户输入的内容直接生成相应 ...
- poi-tl——Word模板引擎应用
poi-tl(poi template language)是基于Apache POI的Word模板引擎.纯Java组件,跨平台,代码短小精悍,通过插件机制使其具有高度扩展性.支持DOCX格式的Word ...
- Word模板引擎poi-tl
文章目录 ◆ 方案对比 ◆ 版本 ◆ 特性 ◆ 模板 ◆ 数据 ◆ 输出 ◆ 数据模型 ◆ 标签 1. 文本 2. 图片 3. 表格 4. 列表 5. 嵌套 6. 区块对 ◆ SpingEL 2. 单 ...
- java word - 2:POI开发流程
接上文,本章介绍下POI的开发流程 不同于Freemarker那样将模板和数据分离的方式,POI是没有模板的,模板和数据是糅合在一起的. POI的开发流程其实网上教程都比较多了,我这边就将我写好的工具 ...
- java word转html 乱码 poi,java word转html poi
java word转html poi [2021-01-29 15:50:39] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(&q ...
- java velocity是什么意思_基于 Java 的模板引擎Velocity快速入门
最近使用Velocity模板引擎,写一个maven项目Coding生成工具. 对基于Java的模板引擎Velocity的demo总结如下: Step1. 创建Maven项目,添加如下velocity的 ...
- Java开源模板引擎
Velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象 ...
- .NET Word模板引擎--MiniWord,继MiniExcel后又一开源作品!
Part1简介 MiniWord 是.NET Word模板引擎,由Word模板和数据,简单.快速生成文件. Part2特点 .NET Word(docx) 模版导出引擎不需要安装 Office COM ...
最新文章
- docker管理平台 shipyard安装
- FZU - 2268 Cutting Game
- cogs 547:[HAOI2011] 防线修建
- 大疆无人机高程不准_大疆消费级无人机快速倾斜摄影测量实践
- 数据结构上机实验之二分查找
- codeforces CF986C AND Graph 建圖 dfs
- C++之临时对象、常引用和浅拷贝探究
- SushiSwap将于5月17日上线IDO平台Miso
- 便签pc android同步,Windows/iPhone/Android多端同步便签软件
- linux目录更改权限不够,Linux中文件夹访问权限不足
- 2022 年年度最佳开源软件
- Make Cents? Gym - 101350M (水)
- mysql cbrt函数_Hive FUNCTIONS函数
- 网络地址转换----NAT
- CAN光纤转换器,光纤转can模块使用说明
- 跨站脚本攻击漏洞(XSS):基础知识和防御策略
- Java面试题——数据库的优化
- Jvm sandbox mock机制实践
- 《白日梦想家》影评笔记
- Git add 、commit后报错:nothing to commit, working tree clean
热门文章
- 【历史上的今天】7 月 31 日:“缸中之脑”的提出者诞生;Wi-Fi 之父出生;USB 3.1 标准发布
- CAS虚拟化高级故障排查指导
- 由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库 ‘msdb‘。无法打开数据库msdb 恢复操作已将该数据库标记为SUSPECT
- 开发一个android桌面
- 在NP下用OD调试游戏的方法
- 怎样给windows服务器传文件,windows服务器怎么远程传文件
- modern php_使用Modern.IE改善WordPress主题开发
- SQLServer 计算两个日期间的工作日(排除周六和周日,不排除节假日)
- 【Swift】第9周 小说列表展示案例
- 信息安全工程师笔记-网站安全需求分析与安全保护工程