[编程] POI-TL 根据模版生成Word文档的一些使用技巧汇总

1. 我想生成动态目录怎么办?

经过我这边的测试与实践,比较好用的就是通过 占位符 生成一段指令,让我们在打开Word文档之后弹窗提示更新目录域。缺点:每次打开都会提示,如果选择否,目录则不生成。优点:每次提示如果选择是,会自动生成目录并打开导航窗口,使用起来还算方便。

题外话:我这边还试了通过先生成目录,然后代码里生成内容后触发更新的方式,依旧会有弹窗。还搜到过一种避免弹窗的方式,然并卵。乖乖用第一种吧,亲。

(有好的方法记得分享一下哦)

那么怎么实现呢?下面给出教程。

1st:在你需要生成目录的地方添加占位符,比如 { {toc}},如下图所示:

2nd:前文说过了,其实是在指定位置插入一段指令触发Word自动生成目录的功能。所以需要你在文档内容中,需要作为标题的地方都要使用Word中的标题1,标题2,标题3......格式进行标识。

3rd:准备好文档模版内容的实体类后,需要再加入一个字段 toc (字段名与模版中的占位符一致)。如:

/**
 * 模版数据实体.
 *
 * @author linmu
 */
public class TmplateData {

    /**
     * 目录.
     */
    private String toc;
    
    // ... 以下为其他字段内容以及Getter,Setter方法,忽略

}

4th:代码编程渲染模版生成目录及Word文件。如下: 

import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;

TmplateData tmplateData = new TmplateData();
// 设置目录占位符字段的值
tmplateData.setToc("toc");

// 创建模版配置,并绑定目录渲染策略给名
FreeMarker、Poi-tlPOI 都是用于生成 Word 文档的工具,它们之间的主要区别在于生成方式、操作方法、使用场景、性能以及功能方面的不同。 1. 生成方式 FreeMarker 和 Poi-tl 都是基于模板的生成方式,需要先创建一个 Word 文档模板,然后将数据填充到模板中,最终生成一个完整的 Word 文档。而 POI 则是直接对 Word 文档进行操作,可以读取、写入、修改、创建 Word 文档。 2. 操作方法 FreeMarker 和 Poi-tl 都是使用 API 对文档进行操作,例如修改样式、替换变量、插入图片等等;而 POI 则是使用 POI API 操作 Word 文档。 3. 使用场景 由于 FreeMarker 和 Poi-tl 是基于模板的生成方式,因此适用于需要批量生成相似结构的 Word 文档的场景,例如生成合同、报告、简历等;而 POI 则适用于需要对 Word 文档进行灵活操作的场景,例如读取、修改、创建、删除等。 4. 性能 由于 FreeMarker 和 Poi-tl 都是基于模板的生成方式,因此生成 Word 文档的性能相对较高,特别是在批量生成 Word 文档时更为明显;而 POI 则需要直接对文档进行操作,因此在生成 Word 文档时性能相对较低。 5. 功能 Poi-tlPOI 都提供了丰富的 API,可以对 Word 文档进行各种操作,例如读取、写入、修改、创建、删除、格式化等等,而 FreeMarker 则主要是通过填充模板来生成 Word 文档,并提供了一些基本的操作 API,例如对模板中的变量进行替换、对模板中的样式进行修改、插入图片等等。 综上所述,FreeMarker、Poi-tlPOI生成 Word 文档的方式、操作方法、使用场景、性能以及功能方面都有所不同,选择哪个工具需要根据具体的场景和需求进行判断。如果需要批量生成相似结构的 Word 文档,可以选择 FreeMarker 或 Poi-tl;如果需要对 Word 文档进行灵活操作,可以选择 POI
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值