主子表+补足空行实现多栏式报表
报表需求:
本例为客户的实际表样,需要实现如下需求:
根据承办人分组统计已归档,已登记,尚未登记的案件,在一张报表里进行统一展现。
1. 黄色,红色,蓝色区域分别以列表形式统计已归档,已登记,尚未登记的案件,三片区域形成多栏式报表。
2. 对每个承办人分组显示不同类型的案件。
3. 每一个承办人所占的行数相同,以案件数最大的行数为准,剩下的以补足空行的方法保证格式统一。
实现思路:
1. 针对已归档案件,已登记案件,尚未登记案件复杂报表设计" target="_blank" class="quieeLink1">设计三张独立的报表模板。设计主报表模板以引入式子报表的方式调用这三张模板,并且传入”承办人”作为报表参数,形成多栏式报表。
2. 为实现需求中的第3点,需要共享三张子报表模板中的数据集,根据数据集条数决定当前报表应该补多少行空白行。
具体实现:
1. 子报表模板:
三张子报表的实现方式类型,这里只以其中一张报表为例介绍实现过程。
1)添加参数name,该参数需要从主报表模板中传入。
2)报表数据集为测试内建数据集
3)报表模板设计如下:
筛选数据集中承办人(姓名)为name参数值的记录。
2. 主报表模板:
A3单元格为可扩展单元格,其中为承办人的名字,测试使用表达式=list(“俞巍“,”李四“,”王五“)返回集合结果。
B3,H3,N3单元格分别引用设计好的3张子报表,并传递A3单元格的值作为参数。
通过以上方式可以预览得到如下效果:
通过预览效果可看出,对于相同的参数得到的子报表的条目数是不一致的,不足条目数的部分会出现空白区域。
为实现格式一致性,需要用不足空行的方式在空白区域补足空行。
下面就需要对设计好的三张子报表模板做修改,共享这三张模板的数据集,得到他们的最大行数,不足行数的模板补足空行。
三张报表模板修改方式类似,同样以一张报表模板为例介绍,修改如下:
1)添加数据集,添加其他两个报表模板中用到的数据集
2)模板修改
A. 第一行在A1,B1,C1分别统计根据name参数筛选的数据集记录数,也就是子报表的条目数。E1单元格=maxc(B1,C1,D1,D1)[1]取得A1,B1,C1单元格的最大值,也就是三张子报表的最大条目数。第一行为隐藏行。
B. A4单元格=to(0,E1-count(B3{})-1) 根据本子报表实际扩展行数count(B3{})和最大记录数E1单元格值,计算需要补足的行数。该单元格不可视。
修改子报表后的报表展现效果如下,空白区域已经以空行补足,保证格式一致性。