[]
在报表中,不同的数据间会有父子关联。这种关联关系,一般由业务需求所体现,在 GcExcel 中,也可以支持这种父子关系。
例如,在下图中,team 和 name 是模板布局中的两个绑定字段,在A1中绑定了 team 字段,在A2 中绑定了 name 字段。图中的两个字段,使用到了隐式父子关系设置,其中 team 为父,name 为子。
在数据填充时,GcExcel 会 根据 team 的值对 name 字段的数据进行分组或筛选。此外,name 字段的扩展方向将也由 team 字段决定。
名词 | 说明 |
---|---|
父子关系 | 当两个字段产生关联时,需要进行分组,筛选时。管这两个字段之间的关联称之为父子关系,也称之为主从关系。 |
父单元格 | 当两个字段产生父子关系。父单元格中的数据字段,会被用来对子单元格中的字段进行分组或筛选。 |
子单元格 | 当两个字段产生父子关系。子单元格中的数据的筛选,分组,排序,均会受到父单元格影响。 |
父子关系很类似数据库中的左关联。在模板布局中可能会使用到多个字段,每个字段都会对应数据源中的一列数据,当希望不同的字段所表示出一种关联的关系,同时指定到特定的某一行时,则需要再它们之间会建立一种关联关系,这种关联关系在 GcExcel 中被称为父子关系。在最终报告中展开时,将根据此关系对数据进行筛选或分组。
父子关系会产生两种影响:
过滤: 使用父单元格的数据作为过滤条件来过滤子单元格中的数据。
例如,在下图中,name单元格中的数据将根据其父单元格( team )中的数据进行过滤:
扩展方向: 单元格中的数据根据父单元格中数据的扩展方向进行分组。
例如,在下图中,name单元格中的数据根据其父单元格进行分组和水平展开:
在 GcExcel 模板中,有三种方式可以指定父子关系:
隐式父子关系
显示父子关系
区域父子关系
当一个绑定字段同时被三种设置影响时,其优先级为:
显示父子关系 > 隐式父子关系 > 区域父子关系
隐式父子关系,是由 GcExcel 根据字段间的相互位置,自动为模板分析设置默认的父子关系。
当两个字段上下相邻时,下面的单元格会基于上方的单元格进行过滤,展开方向为E = V垂直展开。
当两个字段左右相邻时,右边的单元格会基于左侧的单元格进行过滤,展开方向为E = H水平展开。
示例:
在下图中,A1是父单元格,B1是子单元格,B1会根据A1的数据进行过滤,分组。A1和B1会延垂直方向展开。
在下图中,A1是父单元格,A1是子单元格,A2会根据A1的数据进行过滤,分组。A1延水平方向展开,A2分组会跟随A1单元格水平方向展开。单个分组中,数据会延纵向方向展开。
语法:
GcExcel 提供了Context (C) 属性,允许显示指定父子关系,显示父子关系的优先级高于隐式父子关系。当隐式父子关系无法满足需求时,可以通过显示父子关系重新制定关联关系。
示例:
使用 "C" 属性显式指定父单元格,下图中,B3与A1并不关联,没有默认父子关系。通过 C 属性,显示指定 A1 为父单元格, B3 为子单元格。
使用 "C" 属性显示移除父子关系 (C= None),在下面的例子中,会有默认的父子关系,但是当显示移除父子关系后,结果如下:
语法:
对于复杂的布局,有时会有多个单元格并不相连,无法应用隐式父子关系。此时您可以选择给每个单元格设置显示父子关系,或者使用区域父子关系,设置在父单元格上,标记那一片区域属于子单元格。
区域父子关系的优先级低于其他两个,当使用区域父子关系时,请注意显示父子关系以及隐式父子关系对区域父子关系的影响。
示例:
下面的模板是为显示不同相机型号的销售详细信息,数据需要基于相机型号 (name) 进行分组及扩展。因此可以 name 字段的单元格定义 R=B11:F16,而无需为每个字段指定父单元格。
生成的 Excel 报表,如下所示: