GcExcel 模板系列教程四-分组与扩展

发布时间:2024/04/01 20:04 发布者:Leo

返回博客中心

概要

在上一篇文章《GcExcel 模板系列教程三—数据间的主从关系及单元格布局》中,我们为大家分享了数据间的主从关系及单元格布局,主要讲解数据之间的主从关系,以及在 GcExcel 中是如何在单元格中表示这种关系的。

在本期教程中,我们将为大家分享 GcExcel 中的分组与扩展以及 GcExcel 模板中是如何解决各种分组与扩展情况。

模板中的扩展

模板引擎如何扩展单元格

第三期教程中,通过主从相关的属性(Context 以及 Range)为模板配置主从关系。并提到了扩展相关的规则:

  1. 先扩展主单元格,后扩展从单元格。
  2. 主单元格扩展的时候,需要复制从单元格,并调整主从关系。
  3. 从单元格获取数据的时候要受主单元格的约束,扩展的时候要考虑调整主单元格的位置和大小。

这次我们举一个例子,让大家更好地理解 GcExcel 是如何进行数据填充的,假定现有如下的模板:

第一步:GcExcel 先扩展 A1 单元格,模板引擎从数据源 ds 中,获取销售公司的数据,得到两条数据。根据默认的扩展方向(向下),将数据跳至 A1 和 A2 中。同时,C1 的单元格因为主从关系,而被复制,实现结果如下:

第二步:GcExcel 扩展单元格 C1,模板引擎从数据源中获获取销售公司为 【西安公司】的员工数据。得到三条数据,因此扩展C1,并填入数据。A1 也因为是 C1 的主单元格,从而也被复制扩展。结果如下:

第三步:GcExcel 继续扩展 C4 单元格。与第二步逻辑一样,结果如下:

扩展的方向

Excel作为结构化表格,本质是一个二维矩阵。因此扩展的方向,自然也只有水平,横向扩展和垂直,纵向扩展。

在刚才的例子中,A列和C列的数据扩展均是向下的。但是在有些报表中,数据是水平甚至是交叉扩展的。

因此,GcExcel 提供了属性 E,可以通过设置 E = H 来指定,横向扩展。

在大多数情况下,GcExcel 会根据单元格主从关系来,选择扩展方向:

  • 当主从单元格为左右相邻,则向下扩展。
  • 当主从单元格为上下相邻,则向右扩展。

但是当主从单元格不相邻时,则可以使用 E 来指定方向。在 GcExcel 中,仅会向下( E= V)或者向右( E= H)两个方向进行扩展,或者 E = N,不做扩展。

例子:交叉扩展

基于之前的数据表,如果希望生成的报表如下所示,是一个交叉表。那就需要合理利用扩展属性来解决问题。

为了能够生成如上的报表结果,模板应该如下设计:

在B2中,我们通过横向扩展商品类型,为系统增加了更多的选择。而A2则根据默认设置,实现了纵向扩展的功能。同时,在B2格子中,我们进行了显示指定,根据A2和B1的数据进行自动扩展。通过灵活的报表生成功能,能够获得之前期望的结果,提供更美观、直观的数据展示。

模板中的分组

在上述例子中,细心的读者可能已经注意到在数据源中,【销售公司】数据与【员工】数据相关联。然而,在导出后,公司名称却被自动分组去重。这正是GcExcel在模板填充时的一项智能功能,它能够自动为数据进行分组,从而提供更清晰、简洁的数据展示效果。这个特性使得数据处理更加美观和易于理解。

在模板属性中,GcExcel 提供分组属性 Group,用来处理各种分组的需求,Group 有四种属性值:

  • G=Normal: 对于列中的相应记录,不重复分组依据字段的值;而是每个数据组打印一次。
  • G=Merge (默认值): 行为与常规参数相同,不同之处在于它会合并每个组集的按字段分组的单元格。
  • G=Repeat: 对相应的记录重复分组依据字段的值。
  • G=List: 字段值针对相应的记录独立列出。

不同的属性应用在模板上会有如下效果:

Normal

模板修改如下:

enter image description here

生成的报表如下:

Normal 情况下,A1单元格会扩展,但是数据仅出现一次。

Merge (默认情况)

模板如下:

生成的报表如下:

enter image description here

Merge 即默认情况,A1单元格会扩展,数据仅出现一次,但会合并单元格。

Repeat

模板如下:

生成的报表如下:

Repeat情况下,A1单元格会扩展,且数据会被重复填充。

List

模板如下:

生成的报表如下:

enter image description here

在List情况下,A1单元格会自动扩展,并且数据会被重复填充。然而,这种情况下并没有进行分组,数据库中的数据被完整地列出。我们可以将List理解为不进行数据分组的方式,而其他三种情况则代表了经过分组后的不同展示方式。这种设计使得数据处理更加优雅和清晰。

总结

本章主要对模板语言中的扩展和分组进行讲解,扩展和分组是模板填充中重要且基础的概念。

下一期,我们将继续讲解模板填充中的其他属性及设置。


GcExcel | 下载试用

GrapeCity Documents for Excel (简称:GcExcel)是一款基于 Java 平台的服务端高性能表格组件,可与纯前端表格控件 SpreadJS 前后端兼容,无需依赖 Office、POI 或第三方应用软件,在前端展示电子表格数据,在服务端批量创建、加载、编辑、打印、导入/导出 Excel 文档,为您开发的应用程序提供在线文档的前后端数据同步、在线填报与服务端批量导出与打印,以及类 Excel 报表模板设计与服务端高性能处理等一整套类 Excel 全栈解决方案