java使用poi-tl导出表格动态列

568 阅读1分钟

poi-tl

工作中常见的 word 导出 poi-tl 都能满足,一般情况下常见的 word 中插入表格都是按行插入的,一个通用的表格头部,然后下面的内容就是动态的内容进行展示,例如下面这样的:\

image.png

但是也是说了这是一般情况下,有时候也会出现按列展示的,左侧类似于上面这种表头,然后右侧进行对应的具体值数据展示。
例如我们把上面表格中基本信息修改为横向的列式展示,其中左侧固定列为 姓名年龄性别,右侧展示对应的值,例如下面这样:

image.png

实现

具体的实现和纵向表格的实现一致,需要进行区分的只是行转列了的问题,之前是把数组的对象写在数据行的上面一行,这里的话就是把数据对象写在数据内容的前面一列随便哪一行都可以。
具体的 java 代码如下:

List<UserInfo> userArr = new ArrayList();
LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy();
ConfigureBuilder configureBuilder = Configure.builder()
                                    .bind(userArr, policy);
dataMap.put("userArr",userArr);
dataMap.put("cjArr",cjInfo);
XWPFTemplate template = XWPFTemplate.compile("D:\template.docx").render(dataMap);
try {
    template.writeAndClose(new FileOutputStream("D:\out.docx"));
}catch (Exception e){
    e.printStackTrace();
}

其中需要注意的是一定要标识一下 userArr 为数组,否则的话模板中无法识别它为数组,也就是 .bind(userArr, policy) 一定不能少,有多少个数组就需要添加多少个。
java 数据包好了然后就是写模板中的内容了,模板的写法如下:

image.png

最终的呈现效果也就是这样,需要注意的是如果当列的行数过多的时候可能会造成排版很挤的问题,这个需要在开发模板之前进行考虑。

image.png