3. 快速开始

3.1. 2min入门

新建Word模板template.docx,包含内容{{title}}

{{title}}

3. 快速开始 - 图1

3.2. Template:Word模板和样式

Word文档支持DOCX格式,所有的模板标签都是以 {{ 开头,以 }} 结尾,模板标签可以出现在任何非文本框的位置,包括页眉,页脚,表格内部等等。

表格布局可以设计出很多优秀专业的文档,模板文档请使用表格布局,不支持文本框。

poi-tl的一个核心特点是 数据模型与样式的分离,同样的数据模型可以用来渲染各种不同样式的模板。

文档的样式继承模板标签的样式,即如果模板{{title}}是蓝色微软雅黑加粗四号字体,则替换后的文本也是蓝色微软雅黑加粗四号字体。

style

3.3. Data-Model:数据源

数据源的结构体是一个标签名称和数据模型映射的集合,即[{标签名称, 数据模型}]。数据源可以是一个Map,其中key是标签名称;可以是一个JavaBean,field名称是标签名称,也可以通过注解@Name设置标签名称。

  1. // 模板标签d_number
  2. @Name("d_number")
  3. private String dNumber;
  4. // 模板标签m_vin
  5. private String m_vin;
poi-tl默认的表达式支持对象点缀式访问,比如名称为{{author.name}}的标签对应的数据是author对象的name属性值。表达式也支持中文,比如{{客户手机号}}。

数据模型实现了接口 public interface RenderData {} , 有以下几种数据模型:

  • TextRenderData、HyperLinkTextRenderData

  • PictureRenderData

  • MiniTableRenderData

  • NumbericRenderData

  • DocxRenderData

3.4. output:流

可以将最终结果渲染到任意输出流中,比如输出到文件流FileOutputStream生成新文档,输出到网络流ServletOutputStream供浏览器下载。

  1. // 输出到任何流
  2. template.write(OutputStream stream)
  3. // 便捷的输出到文件
  4. template.writeToFile(String path)