Word 模板渲染引擎-Poi-tl

2 篇文章 0 订阅

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

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

file

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类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。
这是官方给出的几种解决方案的对比

file

1.2 特性

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

file

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均可), 如下:

file

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 查看

查看渲染后的文档如下:

file

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 创建模板

file

3.6 渲染结果

file

4. 下期继续

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

file

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用easy-poi导出word模板中的表格时,需要按照以下步骤进行操作。 首先,我们需要准备一个word模板文件,其中包含了我们想要导出的表格的样式和布局。可以使用Microsoft Word或其他支持word格式的编辑软件创建和编辑模板。 接下来,我们需要使用easy-poi的API来读取和处理模板文件。首先,我们需要创建一个`TemplateExportParams`对象,指定模板文件的路径。 然后,我们可以通过调用`ExcelExportUtil.exportWord`方法来根据模板生成word文件。在导出过程中,我们可以使用`Map`或`List<Map>`对象作为数据源,用于填充模板中的表格单元格。 对于简单的表格,我们可以使用`Map`对象来存储数据。其中,键对应模板中的字段名,值对应字段要显示的数据。如果我们需要填充多行表格,可以使用`List<Map>`来存储多个`Map`对象。 在代码中,我们可以使用以下语句来导出word文件: ```java String templatePath = "模板文件路径"; String outputPath = "导出文件保存路径"; TemplateExportParams exportParams = new TemplateExportParams(templatePath); Map<String, Object> map = new HashMap<>(); map.put("表格数据", 数据源); Workbook workbook = ExcelExportUtil.exportWord(exportParams, map); FileOutputStream fos = new FileOutputStream(outputPath); workbook.write(fos); fos.close(); ``` 其中,"表格数据"是模板中指定的字段名,数据源是存储表格数据的`Map`或`List<Map>`对象。 最后,我们可以保存生成的word文件到指定的输出路径。通过调用`workbook.write`方法将`Workbook`对象写入到输出流中,即可保存为word文件。 以上就是使用easy-poi导出word模板表格的主要步骤。通过简单配置模板和填充数据,我们可以轻松地生成符合需要的word文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值