在分页后web报表的最后一页补足空行的方法
几乎任何形式的文档和报表都离不开分页,报表如何分页在B/S模式的Web报表中也是个常见的问题,特别是当大数据量的Web报表需要打印输出时,不可能将所有数据打印到一张纸上,这时必然涉及到报表的分页。开发Web报表常常遇到这样的问题:当数据比较多时,在分页后,常常最后一页只有几条数据,这样的报表被打印出来以后,看起来不是很美观,是否能在Web报表最后一页不足行的时候自动用空白行补充呢?
这个问题用润乾报表可以非常灵活的解决,下面介绍Web报表分页打印时补空行的四种不同情形如何在润乾报表中实现。
情形一,行高固定,无表头的报表
这种形式的报表最简单,下面用一个两层分组的客户表来举例说明。当此报表分页后,一共分为4页,最后一页只有一行,看起来非常不规整,如下图所示:
针对这张报表,假设报表按A4纸张大小进行分页,一页纸可以打印30行。那么我们首先在报表末尾增加一个空白行,然后在最左边的单元格里加入=to(1,30-ds1.count()%30)表达式,此表达式的意思是说,一页纸固定行数是30行,分页时如果最后一页数据集ds1数据不满30行,则用空白行补充。
接着选定此单元格,将右侧属性栏中的[可视]属性去掉,发布报表即可看到效果,设计界面如下图所示:
将此报表发布后,可以看到最后一页已经被补入了空行,正好填充满第四页,如下图所示:
情形二,行高固定,每页都有表头的web报表
当报表加上表头而且每页都有时,情况也不复杂,只需要算出除去表头每页一共可以容纳多少行就可以。在本例中,除去表头每页还可以容纳29行,这样我们只需要将单元格A3中的表达式改为=to(1,29-ds1.count()%29),就实现了添加空行。发布后的效果如下图所示:
其实当报表加入加入表尾、页面、页脚等等,并且每页都显示时,处理方法也是一样的,只要算出这种情况下每页可以容纳多少行,再取模就可以。
情形三,行高固定,行数不固定,每页都有表头的报表
这种情况下,报表的总行数不等于数据集中记录的总个数,比如本例中在每个”地区”分组后都加入一个”公司数”汇总信息行的情况。这时报表按”地区”一共分为几组由具体数据决定,在设计报表时并不知道,但在润乾报表中非常容易得到这个分组个数,只要算出A2扩展出几个单元格就行。我们把A4的表达式改成:=to(1,29-(ds1.count()+count(A2{}))%29),如下图所示:
其实,本例只是行数不固定的一种简单情况,还有很多其它行数不固定的情况,在润乾报表中都可以用表达式算出这不固定的总行数,从而解决问题。
情形四,行高固定,行数不固定,只有第一页有表头的报表
很多Web报表只需要在第一页打印报表表头,针对这种情况,润乾报表可以通过报表属性设置很方便地设置表头打印的方式,如下图所示:
这时情况其实和变化一类似,只是第一页多出来了报表头这一行,我们只需要在变化三的基础上把取模总数加1、再把每页按29行取模改成按30行取模,修改表达式为:=to(1,30-(ds1.count()+count(A2{})+1)%30),最后预览结果如下图所示:
到这里,利用润乾报表实现分页打印Web报表补足空行的四种情形都介绍完了,细心的读者可能会发现,这四种变化都是基于”行高固定”这个假设,那么当行高不固定的时候如何处理呢?其实最简单答案还是在润乾报表中用取模的方法,只是取模的时候要加入具体行高和打印纸张的高度进行计算就行了。这时候又有读者会问,如果Web报表中的纸张大小都不固定怎么办呢?呵呵,这个也难不倒润乾报表。开发人员可以用润乾报表中的参数和宏的功能,动态设定纸张大小,以适应不同的打印情况。
相关文章:web报表的扩展功能