报表优化作为报表开发进程中,开发者与最终用户最具争议的部分,一直都饱让报表开发者所头痛。如何最有效地设计,渲染,处理报表?这里就通过备受好评的报表控件Stimulsoft Reports为例,为广大开发者提供一些有关优化报表的新灵感。
有兴趣可以去下载Stimulsoft Reports,对照着看本文。
使用报表开发工具,不仅能在开发过程中提高系统及工作的效率,节省报表开发的时间,更重要的是能够最优化的实现最终用户所需的报表效果,从而开 发出更符合需求甚至先进于用户需求的报表产品。一般而言,优化报表设计主要的方向在于两个方面:提高报表渲染速度和减少内存使用量,通过以下方面的优化内 容,都是为这两个方面服务的。
要提高报表渲染的数据,必须要做的是肯定是数据处理了,从数据库中只请求报表所必要的数据。例如,如果报表只需要数据库中的少数表和字段,那么 久没有必要将数据库中所有数据都添加到字典中,否则系统将花费大量时间与资源在其上。在SQL中使用WHERE子句会增加SQL的逻辑性。如果不需要表中 的所有字段和记录,可以用于WHERE来指定条件过滤数据。不过WHERE指定的条件是在SQL过滤器中的,而不是在数据带区的过滤器中的。使用过滤器能 实现只显示表中的部分记录,所有过滤器对渲染性能的作用非常积极明显。
除此之外,还可以通过设置SQL查询值到数据带区的过滤引擎属性中,这样就能自动的添加WHERE条件到SQL查询了。
在渲染报表过程中的图像优化能够大大减少内存使用量,在大多数情况下,高分辨率的图像在报表中并不是必须的,而查看高分辨率的图像将消耗大量计算机的内存,而不使用Stretch图像属性来降低图像分辨率和缩小图像到适合大小,是个非常不错的解决方案。
尽量使用常见的自定义控件,来代替RichText控件能够提高渲染速度。因为使用RichText控件可能在不同环境中出现各种复杂的问题,例如在Web中不存在富文本编辑器,那倒导出Excel时,富文本的部分就会转化成图片,这就会对输出后文档编辑造成困难。
尽量把所有控件都放置在同一个页面上有助于提高渲染效率,有时开发者会将在一页内放置不下的控件放到下一页去,或者将他们单独分组成一个数据带区放置在单独的一页上,甚至于使用副报表控件,但是这些方法都是非常消耗渲染时间的。
如果想要提高报表的渲染速度,我们建议将报表的高度属性加大,这样就能将页面调整到能放下所有控件的尺寸。高度属性只会在设计模式中增大页面,不会在报表查看器中将报表放大,这一点开发者可以放心。
删除不必要的分组也能提高报表渲染的速度。例如,删除多余GroupHeader控件进行的分组。用户组一般分了几个类目:ID、Name、 Description等等,但这些类目明显是不够的,需要自定义复杂条件来完成分组,例如需要以多字段为条件来创建分组。所有的条件可以包含在一个单独 的分组中,在这种情况下,就不必使用多个GroupHeader控件了,只需一个就行了。这样能加快报表开发并简化报表结构。