做网站的列表是必须的吧,poitl导出同样支持

317 阅读2分钟

「这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战」

表格

{{#var}}

  • 虽然word是针对文字工作的,但是里面的表格使用的频率也是非常的高的,尤其是企业级报表统计等都是需要借助于表格的。poi-tl针对表格提出了#语法。在我自己的框架中表格也是非常的简单粗暴,直接循环数据生成行,并没有针对空数据进行异常行为处理。但是poi-tl中提出了空数据的替代方案。

  • 还记得上面我们提到的RenderData的实现类吗?没错表格也是需要用到其中的实现的。

  • 这里我将他们的位置进行了调整,因为一个完整的表格是需要MiniTableRenderData,RowRenderData两个数据解析来完成的。这里感慨一句框架终究是框架,我自己实现的office-multip虽然功能和他差不多但是在代码层面上并没有分的这么细致。

  • 首先我们看看MiniTableRenderData数据模型

  • MiniTableRenderData实际上是数据+样式两种设置。在数据层面上有细分为表头+数据两部分。针对空数据是提供了默认提示数据方案。

  • 另外就是样式了。和我们上面TextRenderData中的style类似。

  • 表格的样式属性明显少了很多。可以设置表格的背景色几单元格的对齐方式

  • 因为表格外部的设置属性无非就那两个,主要的还是单元格的设置。单元格内就是文本,图片等其他的属性了,而其他的解析在对应的解析中设置就行了。这里把表格理解成容器就好多了。所以重点的配置应该是在RowRenderData中的配置。

 ​
 @Test
 public void tableTest() {
   String name = "table";
   Map<String, Object> map = new HashMap<>();
   //表头
   RowRenderData header = RowRenderData.build(new TextRenderData("99246f""姓名"), newTextRenderData("99246f""学历"));
   //数据体
   RowRenderData row0 = RowRenderData.build("张三""研究生");
   RowRenderData row1 = RowRenderData.build("李四""博士");
   map.put("table", new MiniTableRenderData(header, Arrays.asList(row0, row1)));
   init(name,map);
 }
  • 上面我们能够看到在表头中我们对文本进行了特殊的设置。下面看看数据导出的效果吧

image-20211130113213609

  • 有关MiniTableRenderData的属性详解官网解释
 {
   "rows": [ 
    {
       "cells": [ 
        {
           "cellText": [TextRenderData],
           "cellStyle": { 
             "align": "center",
             "backgroundColor""ff9800"
          }
        }
      ],
       "rowStyle": { 
         "align": "center",
         "backgroundColor""ff9800"
      }
    }
  ],
   "header": { 
     "cells": [
      {
         "cellText": [TextRenderData],
         "cellStyle": {
           "align": "center",
           "backgroundColor""ff9800"
        }
      }
    ],
     "rowStyle": { 
       "align": "center",
       "backgroundColor""ff9800"
    }
  },
   "noDatadesc": "No Data Desc", 
   "style": { 
       "align": "center"
    }
   "width": 14.65 
 }
  • 但是我们可能不仅仅满足需要这种有板有眼的word表格,可能我们需要导出很复杂的表格。这种情况下我们可以只导出一部分数据,另外一部分可以在模板中配置。甚至是有的通过文本站位进行填补就行了。