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");
// 创建模版配置,并绑定目录渲染策略给名