ActiveReports使用教程:矩表是什么?
ActiveReports 是一款专注于 .NET 和 .NET Core 平台的报表控件。通过拖拽式报表设计器,可以快速地设计 Excel表格、Word文档、图表、数据过滤、数据钻取、精准套打等类型报表,全面满足 WinForm、ASP.NET、ASP.NET MVC、WPF 平台中各种报表的开发需要。同时,通过丰富的 API 可以灵活的实现报表创建、加载和运行时的个性化自定义需求。
概要
矩表(Tablix)显示按行和列进行分组的聚合数据汇总。它提供了增强的布局功能, 从简单的创建b表到高级矩阵。矩表实质上是两个数据区域(表和矩阵)的组合。因此,它提供了表和矩阵的所有功能,以及添加包括行或列上的多个相邻组的功能支持和灵活的跨组布局。
您还可以使用矩表数据区域的上下文菜单中的"使行高相同"和"使列宽相同"来设置多行的高度或者多列的宽度。您可以使用Ctrl键和鼠标单击,或者在行头或列头上拖动鼠标来对多个行或列进行选择。
在HTML5Viewer中,您甚至可以冻结矩表数据区域的行和列标题。
本主题描述矩表数据区域中的元素如何协同工作并解释其基本操作。
- 矩表数据区域
- 行控点和列控点
- 矩表的布局操作
矩表数据区域由设计区上的虚线表示的四个区域组成:角部区、行组区、列组区和正文区。默认情况下,每个矩表的单元格都包含一个文本框元素,每个单元格的函数由其位置决定。您可以使用 LayoutDirection 属性更改矩表数据区域的布局。
报表设计器包括一个专门设计用于管理矩表分组结构的分组编辑器窗口。分组编辑器窗口位于报表设计器的下面。
下面的图片展示的矩表的各个数据区,其中列分组为"月份",行分组为"区域",以及嵌套的行分组"省份".
分组编辑器窗口包含了以下分组:
- 行分组:分组编辑器中的行分组列表显示了矩表中所有的行分组。
- 区域"分组:矩表行组区写着"=[区域]"的单元格对应着分组编辑窗口行分组区中的"区域"分组。此分组在报表运行时将会展示当前区域字段的值。
- "省份"分组:"省份"分组是"区域"分组中的一个嵌套分组。矩表行组区写着"=[省份]"的单元格对应着分组编辑窗口行分组区中的"省份"分组。此分组在报表运行时将会展示当前省份字段的值。
-
列分组:分组编辑器中的列分组列表显示了矩表中所有的列分组。
- "月份"分组:矩表列组区写着"=[月份]"的单元格对应着分组编辑窗口列分组区中的"月份"分组。此分组在报表运行时将会展示当前月份。
- 静态单元格:在分组组编辑器窗口中, 行组和列组中的静态单元格不显示, 因为这些单元格不与任何分组的数据关联。静态行和列单元格用于在矩表数据区域中显示标签和总计。静态的列分组单元格中"合计"、"销售额"、"搭赠费"和"比例"都是标签。 静态的行分组单元格中"小计"和"合计"也是标签。
下列的表格中显示了销售额、搭赠和比例在行方向上按照区域和省份分组,列是根据月份分组动态生成。总计行显示的是销售额的总和和搭赠的总和。
要在矩表数据区域中执行基本操作, 我们需要首先了解静态和动态行和列的概念。
矩表数据区域中的行或列可以是静态或动态的。矩表数据区域包含提供网格类型布局的多个行和列, 您可以在其中添加或删除静态或动态行和列, 以便有效地显示数据。
- 静态行和列——静态行或列与任何组数据都不关联。当报表运行时, 只呈现一次静态行或列。使用矩表数据区域中的静态行或列显示标签和总计。可以使用分组编辑器窗口来识别静态行和列。
- 动态行和列——动态行或列与一个或多个分组关联, 并为分组中的每个唯一值呈现一次。可以使用分组编辑器窗口来识别矩表数据区域中的动态行和列。还可以通过添加行组或列组来创建动态行或列。
行控点和列控点
选择矩表数据区域时,将显示行控点和列控点。这些控点帮助您处理数据区域,并且能够地指定在矩表布局中添加的数据类型。
下表显示了矩表数据区域中出现的不同类型的控点。
矩表的布局操作
矩表数据区域提供了用于执行基本布局操作的上下文菜单选项。通过右键单击选定的行, 可以从上下文菜单中访问矩表行的版式选项。
-
插入行:从以下选项中选择在选定的单元格组内或外部插入一行。
-
组内:在当前选择行组内插入行。
- 上方:在当前选择行的上方插入行。
- 下方:在当期选择行的下方插入行。
-
外部分组:在当前选择行组的外部插入行。
- 上方:在当前选择行组的外部上方插入行。
- 下方:在当前选择行组的外部下方插入行。
-
组内:在当前选择行组内插入行。
- 删除行:删除当前选择的行。
- 使行高相同:为多个选定的行设置相同的高度。
-
添加行分组:从以下选项中选择在矩表中插入行组。
- 父分组:添加一个父分组。
- 子分组:添加一个子分组。
- 上方相邻:在所选择的行分组的上方添加一个相邻的分组。
- 下方相邻: 在所选择的行分组的下方添加一个相邻的分组。
- 行分组:通过选择删除行分组选项删除一个行分组。
通过右键单击选定的列, 可以从上下文菜单中访问矩表列的版式选项。
-
插入列:从以下选项中选择在选定的单元格组内或外部插入列。
-
组内:在当前选择列组内插入列。
- 左侧:在当前选择列的左侧插入列。
- 右侧:在当前选择列的右侧插入列。
-
组外:在当前选择列组的外部插入列。
- 左侧:在当前选择列祖的外部的左侧插入列。
- 右侧:在当前选择列祖的外部的右侧插入列。
- 删除列:删除当前选择的列。
- 使列宽相同:为多个选定的列设置相同的宽度。
-
添加列分组:从以下选项中选择在矩表中插入列组。
- 父分组:插入一个父级的列分组。
- 子分组:插入一个子级的列分组。
- 左侧相邻:在选定的列组的左侧插入同级别相邻的列组。
- 右侧相邻:在选定的列组的右侧插入同级别相邻的列组。
- 列分组:通过选择删除组选项删除一个列分组。
-
组内:在当前选择列组内插入列。
矩表数据区域可用于使用行组和列组显示复杂数据。让我们看几个场景,了解矩表数据区域是如何工作的。
3.5.1 使用多个相邻的组
在矩表数据区域中,与矩阵和表数据区域不同,可以创建多个相邻的组。让我们以销售报告为例,了解分组在矩表数据区域中的工作方式。
场景
组织希望创建按年份和媒体类型显示销售数据的销售报表。若要使用矩表数据区域设计这样的报表,需要在列组区域中创建多个相邻的组,在行组区中是单个组,并在正文区中显示聚合数据。
让我们看看矩表数据区域的每个区域是如何工作的,创建下面给出的期望输出。
列组区
列组区域包含两个相邻的组,即年份和媒体类型。年份组根据年2004和2005显示分组的数据,媒体类型组根据存储在数据库中的DVD、VHS、LaserDisc、HD-DVD媒体类型显示分组的数据值。行组区
行组区包含 StoreName 的单个组。行组区中的单元格显示行组值,并表示行组层次结构的成员。正文区
此区域显示矩表中的 TotalAmount 的合计总和。当单元格位于详细行或列中,矩表正文区中的单元格将显示明细数据,当单元格位于组的行或列中时则聚合组数据。
3.5.2 合并单元格
在矩表数据区域中, 可以合并具有重复值的单元格。让我们以"商店经理"的报告为例,了解在数据区域中单元合并的工作原理。
场景
组织希望创建一个报表,以显示所有商店经理的姓名,使用单元合并的概念,其中具有相同值的单元格自动合并,以避免混乱。
要设计这样的报表,您需要在矩表数据区域中创建嵌套组,以便根据Region(区域)、District(地区)和StoreName(店名)显示Manager(经理)的名称。
让我们看看矩表数据区域的每个区域是如何工作的, 以创建下面给出的期望输出。
列组区
列组区不包含任何组, 但每个列都有静态标签。有四列标签, 即Region、District、Store和Manager,作为标题用来描述有关数据的信息。行组区
行组区包含嵌套在父/子关系中的三组, 以显示行组数据。将自动合并区域 (父) 和区组 (子) 值,以删除重复的数据值。正文区
此区域显示Manager的全名。正文区通过在表达式中使用 and 运算符串联两个字段 "FirstName" 和 "LastName" 来显示Manager的全名。