在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海.

我们经常会遇到需要定时生成, 发送一些文档的需求, 比如: 简历在线生成, 重要天气预报报告等. 但是手动撰写, 手动发送又特别麻烦, 如果能够自动化生成目标文档, 再自动发送, 那将会给业务人员带来极大的便利. 而 Poi-tl 就是为此而生.

1. poi-tl 简介

poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档.
poi-tl 的工作模式为: Template + data-model = output

1.1 为什么选用 poi-tl

poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。
这是官方给出的几种解决方案的对比

1.2 特性

目前, poi-tl 已经支持了以下特性:

2. Hello Word - YYDS

2.1 引入依赖

<dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.11.1</version>
</dependency>

2.2 创建模板

新建一个 word 模板文档 textTemplate.docx (Office, WPS均可), 如下:

2.3 渲染模板

@Test
void textRender() throws Exception {// 模板文件final ClassPathResource templateResource= new ClassPathResource("textTemplate.docx");XWPFTemplate template = XWPFTemplate// 编译模板.compile(templateResource.getInputStream())// 渲染模板.render(// 渲染模板可以通过 Map 或者 POJO, 数据可以是树结构,每级之间用点来分隔开,比如{{author.name}}标签对应的数据是author对象的name属性值。 new HashMap<String, Object>() {{put("text", "Hello, 我是 poi-tl Word 文本模板");}});// 输出文件final File outputFile = new File("/Users/dreamli/Workspace/MyRepository/javafamily/office-product/target/output.docx");if(!outputFile.exists()) {if(!outputFile.createNewFile()) {throw new RuntimeException("创建文件失败!");}else {log.info("在 {} 创建了新的文件.", outputFile.getAbsolutePath());}}// 写出渲染后的文件到指定文件template.writeAndClose(new FileOutputStream(outputFile));
}

2.4 查看

查看渲染后的文档如下:

3. 标签-Text 文本标签

poi-tl是一种无逻辑「logic-less」的模板引擎,没有复杂的控制结构和变量赋值,只有标签。标签由前后两个大括号组成,{{title}}是标签,{{?title}}也是标签,title是这个标签的名称,问号标识了标签类型.

poi-tl 支持多种标签, 限于篇幅, 本文先讲解 Text 文本标签, 后续持续更新其他标签.

3.1 文本标签模板

模板为:

{{text}}

3.2 数据模型

  • String :文本
  • TextRenderData :有样式的文本
  • HyperlinkTextRenderData :超链接和锚点文本
  • Object :调用 toString() 方法转化为文本

3.3 代码示例

put("text", "Hello, 我是 poi-tl Word 文本模板");
put("textRender", new TextRenderData("ff0000", "Render 文本"));
put("link", new HyperlinkTextRenderData("JavaFamily", "http://javafamily.club/"));
put("anchor", new HyperlinkTextRenderData("JavaFamilyAnchorText", "anchor:appendix1"));

除了new操作符,还提供了更加优雅的工厂 Texts 和链式调用的方式轻松构建文本模型。

put("text", "Hello, 我是 poi-tl Word 文本模板");
put("textRender", Texts.of("Render 文本").color("ff0000").create());
put("link", Texts.of("JavaFamily").link("http://javafamily.club/").create());
put("anchor", Texts.of("JavaFamilyAnchorText").anchor("anchor:appendix1").create());

3.4 TextRenderData的结构体

{"text":"Hello, 我是 poi-tl Word 文本模板","style":{"strike":false, // 删除线"bold":false, // 加粗"italic":false, // 斜体"color":"FF0000", // 颜色"underLine":false, // 下划线"fontFamily":"微软雅黑", // 字体"fontSize":12, // 字号"highlightColor":"green", // 背景高亮色"vertAlign":"superscript", // 上标或下标"characterSpacing":20 // 间距}
}

文本换行使用 \n 字符。

3.5 创建模板

3.6 渲染结果

4. 下期继续

下期继续其他标签的渲染: 图片, 表格, 列表, 图等…敬请期待…哈哈哈…

Word 模板渲染引擎-Poi-tl相关推荐

  1. Word 模板渲染引擎-Poi-tl - 标签(二)

    在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海. 上一节我们对 Poi-tl 进行了简单的介绍以及实现了我们永恒的 HelloWorld, 同时对 po ...

  2. poi-tl(word模板渲染)

    poi-tl(poi-template-language) 序言 方案 移植性 功能性 易用性 Poi-tl Java跨平台 Word模板引擎,基于Apache POI,提供更友好的API 低代码,准 ...

  3. html模板渲染引擎有什么作用

    你定义好一个模板.最简单的例子,例如<html> <div>{$what}</div> </html> 这只是一个模板.{$what}是数据.此时不知道 ...

  4. laytpl v1.1 独立版本 js模板渲染引擎

    案例一: 数据 var data = {title: '前端圈',intro: '一群码js的骚年,幻想改变世界,却被世界改变.',list: [{name: '贤心', city: '杭州'}, { ...

  5. Django的模板渲染(render)机制

    2019独角兽企业重金招聘Python工程师标准>>> 一旦你创建一个 Template 对象,你可以用 context 来传递数据给它. 一个context 是一系列变量和它们值的 ...

  6. poi tl 判断空值_使用poi-tl操作word模板

    使用poi-tl操作word模板 1.导入jar包支持 com.deepoove poi-tl 1.8.2 2.建立word模板 在电脑E盘中建立word模板:"E:\templete.do ...

  7. 排名第一的word模板引擎,到底有多神仙

    hello大家好,今天我要给大家推荐一个非常棒的Word专用的模板引擎,Poi-tl(Poi-template-language).这款引擎基于Apache Poi,可以根据用户输入的内容直接生成相应 ...

  8. poi-tl——Word模板引擎应用

    poi-tl(poi template language)是基于Apache POI的Word模板引擎.纯Java组件,跨平台,代码短小精悍,通过插件机制使其具有高度扩展性.支持DOCX格式的Word ...

  9. Word模板引擎poi-tl

    文章目录 ◆ 方案对比 ◆ 版本 ◆ 特性 ◆ 模板 ◆ 数据 ◆ 输出 ◆ 数据模型 ◆ 标签 1. 文本 2. 图片 3. 表格 4. 列表 5. 嵌套 6. 区块对 ◆ SpingEL 2. 单 ...

  10. Java Word模板引擎-Poi-tl

    本文内容从Poi-tl官方文档摘录,poi-tl是一个基于Java POI的Word模板引擎,有着非常强大的功能 此处只摘录了一些我现在需要用到的功能 文章目录 一.简单示例 1.准备一个模板文档 ` ...

最新文章

  1. linux信号机制 - 用户堆栈和内核堆栈的变化【转】
  2. 程序员笔试面试基础知识资料整理
  3. 【GAN优化】详解SNGAN(频谱归一化GAN)
  4. PCB 电子线路板制作流程
  5. 在SAP C4C创建销售订单时如何绑定创建者的微信open id
  6. “苹果税”猛于虎惹众怒,库克:我们是不会让步的
  7. kali 安装volatility_电子取证技术之实战Volatility工具
  8. 文件服务器与数据库服务器,文件服务器和数据库服务器
  9. tspline工具_Rhino 6 如何使用 T-spline?
  10. 哈理工OJ-2277-喝喝
  11. 服务器硬盘整体ghost,ghost备份整个硬盘| 全盘镜像ghost步骤
  12. 倍福--检测和扫描ethercat从站状态
  13. 谷歌街景中路牌、广告等标识文字的识别(文本识别在自然场景下的应用)之文本识别分类器
  14. panabit之PPPoE认证
  15. coldfusion php,PHP加密代码转换为ColdFusion
  16. 月老在线牵盲盒/交友盲盒/一元交友/存取小纸条盲盒/分销功能
  17. AI轻松入门,AI零基础入门,AI初级教学,
  18. 廖雪峰python#统计学生人数
  19. html修改当前窗口大小,设置HTML页面和浏览器窗口的大小
  20. Java中关于length和length()的问题小结

热门文章

  1. 图片批量压缩工具免费版-免费的批量图片压缩工具
  2. 我的 Serverless 实战 — Serverless 腾讯云文字识别(OCR)详细部署过程
  3. 龙芯3A3000搭建分布式存储服务etcd
  4. PS第一集 证件照换底色
  5. NR接入过程中鉴权失败问题
  6. 腾讯云 鉴权失败,请确认服务器已启用密码鉴权并且账号密码正确? permission denied (publickey,gssapi-keyex,gssapi-with-mic)
  7. 水处理过滤器:常见水处理过滤器的种类大全
  8. 在word文档中添加上角标和下角标
  9. html让视频自动循环播放,javascript – HTML5视频 – 如何进行无缝播放和/或循环播放多个视频?...
  10. 【Excel】数据的排序、筛选和分类汇总