首页 > 其他分享 >还在担心报表不好做?不用怕,试试这个方法(四)

还在担心报表不好做?不用怕,试试这个方法(四)

时间:2024-04-16 09:12:50浏览次数:30  
标签:报表 试试 单元格 扩展 不用 分组 数据 模板

系列文章:

《还在担心报表不好做?不用怕,试试这个方法》(一)

《还在担心报表不好做?不用怕,试试这个方法》(二)

《还在担心报表不好做?不用怕,试试这个方法》(三)

概要

在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(三)中,小编为大家分享了数据间的主从关系及单元格布局。主要讲解数据之间的主从关系,以及如何在单元格中表示这种关系。

在本期教程中,小编将为大家分享如何在模板中解决各种分组与扩展的情况。

模板中的扩展

模板引擎如何扩展单元格

在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(三)中,小编通过主从相关的属性(Context 以及 Range)为模板配置主从关系。以及提到了扩展相关的规则:

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

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

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

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

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

扩展的方向

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

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

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

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

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

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

例子:交叉扩展

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

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


ng)

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

模板中的分组

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

在模板属性中,可以通过分组属性 Group来处理各种分组的需求,Group 有四种属性值:

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

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

Normal

模板修改如下:

生成的报表如下:

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

Merge (默认情况)

模板如下:

生成的报表如下:

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

Repeat

模板如下:

生成的报表如下:

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

List

模板如下:

生成的报表如下:

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

总结

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

本文所提到的所有内容均来自葡萄城公司的服务端表格控件产品GcExcel。如果您想了解更多信息,可以参考这篇产品文档Demo 网站。下一期,小编将为大家介绍数据展开等其他设置是如何在模板中使用的。下一期,小编将继续为大家讲解模板填充中的其他属性及设置。

扩展链接:

轻松构建低代码工作流程:简化繁琐任务的利器

数据驱动创新:以Java编程方式定制数据透视表

Java批量操作Excel文件实践

标签:报表,试试,单元格,扩展,不用,分组,数据,模板
From: https://www.cnblogs.com/powertoolsteam/p/18118759

相关文章

  • 哪(个)些特性功能不用于数据的查询优化?() 并行查询 索引 视图 分区
    哪(个)些特性功能不用于数据的查询优化?()并行查询索引视图分区视图并不在数据库中以存储的数据值集形式存在,而仅仅是一个给用户展示的逻辑虚表,其在数据库中底层还是以完整的数据存储。数据的查询优化策略:避免全表扫描,采用分区的形式,找到指定区域来避免全表查询。建......
  • redis为什么一定要用跳表实现有序集合,却不用平衡树,红黑树或者B+树呢?
    平衡树vs跳表平衡树必须满足所有节点的左右子树高度差不超过1,也就是平衡因子范围为[-1,1]。但是对于范围查询来说,利用平衡树通过中序遍历达到和跳表一样的效果,但是平衡树的每一次插入或者删除操作都需要保证整棵树的绝对平衡,只要不平衡就会通过旋转的方式来重新保持平衡,这个过......
  • 为什么传统行业几乎都用Oracle,而互联网行业几乎都不用Oracle呢?
    为什么传统行业几乎都用Oracle,而互联网行业几乎都不用Oracle呢?17 赞同7 评论10 收藏先抛结论:对互联网企业来说可以用,但是没有必要。理由如下:1、oracle目前来说还是占据着主流。除了互联网之外的传统行业基本上还是用的oracle,无论从规模还是数量上,比sql有......
  • mybatis-mp:这是一款你没见过的好用的ORM框架,值得你拥有!不信,可以试试看!
    https://gitee.com/mybatis-mp @Data@ResultEntity(SysRole.class)publicclassOneToManyVo{privateIntegerid;privateStringname;privateLocalDateTimecreateTime;@ResultField(value="otherName")privateStringasNam......
  • 鸿蒙生态崛起,人才缺口大!程序员们,换个赛道试试鸿蒙开发,钱途无量!
    前言在当今数字化时代,操作系统不仅是连接硬件和应用软件的桥梁,更是推动技术创新和产业发展的核心力量。华为推出的鸿蒙操作系统(HarmonyOS)凭借其创新的设计理念和技术优势,正在逐步改变这一领域的发展格局,并为程序员们带来了新的职业机遇。鸿蒙发展现状你知道现在有多少应......
  • FastReport 报表打印分组(切换订单的时候,让页码分开显示)
    注:在打印报表时,想要一次性打印很多ID(单号)的报表,当一个ID的内容很多,一页放不开的时候,会出现好几张纸是同一个ID的情况。此时,你想要的分页是根据ID分页时,以下操作可以帮你实现第一步:GroupHeader设置分组为单号,设置属性ResetPageNumber为True,StartNewPage为True (2)报表,设置里勾......
  • 资产明细报表代码
    DATA(lv_gjahr)=p_gjahr-1.SELECTanla~bukrs,anla~anln1,anla~anln2,anla~anlkl,anla~txt50,anla~txa50,anla~menge,anla~meins,anlz~kostl,anlz~kostlv,anlz~ps_psp_pnr2,anla~posnr,anla~lifnr,......
  • 还在担心报表不好做?不用怕,试试这个方法(三)
    系列文章:《还在担心报表不好做?不用怕,试试这个方法》(一)《还在担心报表不好做?不用怕,试试这个方法》(二)概要在上一篇文章《还在担心报表不好做?不用怕,试试这个方法》(二)中,小编介绍了模板语言中的的一些基本概念和用法,今天小编将继续为大家介绍如何不同字段间的父子关系,是如何在模板......
  • 课堂测试试卷—数据同步练习
    数据结构分析:(1)京津冀三省的2015年度的科技成果数据原始表,为Access数据库,;(2)要求将三省的科技成果数据汇总到同一表中(要求结果表为MySql数据表);(3)三个原始数据表结构不一致,要求结果表中包括所有的字段,表达意思相同或相似的字段要进行合并,不允许丢失字段(若只有本表独有字段,在结果......