Previous topicNext topic
WebBuilderX > 菜单项内容设置 > Excel报表 > Excel报表模板 > 数据统计 >
汇总模式

与合计模式相比,汇总模式报表增加了“按指定列进行分组统计”的功能。分组统计通过标记“<GroupHeader>”和“<GroupFooter>”实现。其中,“<GroupHeader>”用在细节区的上面,该标记所在行一般仅用于获取分组列的值;“<GroupFooter>”用在细节区的下面,一般用于生成具体的统计值。

例如,根据“订单”表明细数据来生成按“产品ID”进行分组的统计报表,模板设置如下:

请注意,这里的“<GroupFooter>”标记必须带两个参数,一个是表名,另一个是列名。由于要打印的分组内容超过了一行,因此使用了2个标记:<GroupFooter,订单,产品ID>。其中,第一个为开始标记,第二个为结束标记。

除此之外,明细区还必须同时指定排序列,否则将无法起到分组统计的效果。指定的排序列要和分组列完全相同。由于分组使用的“产品ID”,因而这里也指定的是“产品ID”:<订单,产品ID,-5>。生成报表的最后一页如下图:

为什么这里会出现一个空行?这是因为,我们在模板中设置的每页打印数量为-5,这个数量仅仅针对原始数据而言,并不包含分组行。由于最后一页只有4条记录,因此会在分组统计行的后面补足一个空行。事实上,分组统计中的两个标记“<GroupHeader>”和“<GroupFooter>”本身就有换页控制功能,只需再使用可选参数“1”即可。修改后的模板如下图:

既然不再使用细节区本身的数量来控制换页,那么与之配套使用的“<HeaderRow>、<FooterRow>”等标记也就被全部删除,仅在最后面的那个“<GroupFooter>”标记上加了一个参数“1”。生成报表如下图:

很显然,尽管第5页的内容并不足以打满整个页面,但由于在分组行中使用了强制换页,因而每当输出完某个分组的内容时,都会自动换页。

如果要在分组行换页时同时打印标题等内容,这时就需要使用“<GroupHeader>”标记了:

由于该模板使用了两个“<GroupHeader>”,那么它们之间的内容都会被同时打印出来:

但这里还有个问题:如此设置仅在分组行换页的时候才会重复打印标题等分组头,自然换页时并不会打印。例如,最后一页就是自然换页的,这里并没有标题,显的很突兀:

如果希望所有的自然换页也都能够重复打印一次分组头,此时可以将GroupHeader的第四个参数设为“1”,并指定每页的细节区数量。例如,下面的模板,不仅给GroupHeader设置了第四个参数(如有多个GroupHeader,只需设置其中任意一个)、指定细节区数量为-10,同时还在分组头中增加一个表达式:

生成报表如下图:

以上仅仅只是单列的分组统计。如要多列分组,可以按下图所示的模板进行设置:

在上图所示的模板中,先是按“客户ID”分组,然后按“产品ID”分组;细节区的排序参数,也同时加上了所有的分组列,但顺序完全与分组相反:分组要由小到大,而排序要由大到小,因此细节区排序参数要设置为“产品ID|客户ID”。最终得到的报表如下: