poi-tl模板生成word文件(三)

2,146 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第二十天,点击查看活动详情


poi-tl模板生成word文件自动分页或代码分页功能实现,并且需要在每页下方带上特定内容以及当前为第几页与总页数。

poi-tl分页功能实现方式有两种

  • word模板自动分页,生成模板的时候在需要设置页码的位置设置页码,使用工具:WPS
  • 步骤如下:

image.png

  1. 选择页面上方的插入栏之后点击页码,在下方的弹出框中选中页码要显示的位置

image.png

  1. 点击页面出现的页脚,在页码设置中选中要显示的页码样式,应用范围为整篇文档,这样才会使生成好的文档分页后每页都带上分页符

  2. 通过代码传入list数据,word文档会自动分页,并且在每个分页的下方都带入分页符

代码示例:

OtherParam param = new OtherParam(); 
param.setTitle("title"); 
... 
List<Detail> detailsList = new ArrayList(){{ 
    add("1","2","3"...); 
    add("1","2","3"...); 
    ... 
}}; 
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy(); 
Configure config = Configure.builder().bind("details", policy).build(); 
//如果是普通数据(没有跟Configure绑定)只能render一次,多次只会识别最后一个render的内容 
//而列表数据Configure绑定后,可再render其他非循环数据 XWPFTemplate template = XWPFTemplate.compile(resource, config).render( 
    new HashMap<String, Object>() {{ 
        put("details", detailsList); 
    }} 
).render(param);

//也可以绑定多个list数据,每个list都需要与Configure进行绑定,并且赋到map里面去,使用示例:
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy(); 
Configure config = Configure.builder()
                            .bind("details", policy)
                            .bind("tabs", policy)
                            .build(); 
XWPFTemplate.compile(resource, config).render( 
    new HashMap<String, Object>() {{ 
        put("details", detailsList); 
        put("tabs", tabList); 
    }} 
).render(param)

生成好的页面分页效果如下:

image.png

下章写poi-tl模板生成word文档代码实现分页效果,over.