快逸报表对横向扩展的报表强制换行
衡量一个软件工具的好坏,就是要看他是否能满足用户的各种需求,快逸报表在应对各种需求的时候,表现出来良好的应变能力。本文就以一个客户的实际需求来展示一下快逸的随机应变。客户需求:行数较少的报表横向扩展时在web页面会展示出一条又长又窄的报表,样式如下图:
这样不但不美观,而且也浪费了大量的空间,能否让报表在页面上分多行显示而不是无限的横向延伸下去呢?下面就来用实例解决这个需求。
解决这个问题的总体思路是:首先将这个报表横向扩展复杂报表设计" target="_blank" class="quieeLink1">设计出来,然后在那个扩展列的上方写to()函数控制扩展的列数,即扩展几列后换行,同时,在扩展的第一行写to()函数得到一共可以换行的次数。
这个报表模板的设计如下图:
使用demo数据源,建立数据集语句如下:
ds1: SELECT 雇员.雇员ID,雇员.姓氏,雇员.名字,雇员.地址,雇员.家庭电话 FROM 雇员
A1:=ds1.count(),用于计算此数据集内的数据个数。
B1:=int(A1)/5+1,用于计算一共需要扩展的行数,其中”5″是每行的数据列数。
A4:=to(1,B1),作为强制分行的扩展基础。
B4:=(A4-1)*5,是每行的基数,
D3:=to(1,5),与B1统一,控制显示为5列数据
D4:=ds1.select1(雇员ID, 雇员ID ==D3+B4) ,其中D3+B4分别递增,达到与每个雇员ID进行匹配的目的,这里需要着重强调的是数据集里需要”雇员ID”是连续递增的数字,来实现换行后的匹配。在此例中”雇员ID” 是初始值为1的有序递增数据,如果是其它情况,读者可以自己根据具体情况求出这个”雇员ID”或者在数据库中添加一列有序的数字来实现。
D5:=ds1.select1(姓氏,雇员ID==D3+B4),把D5的上主格设置为D4
D6:=ds1.select1(名字, 雇员ID ==D3+B4),
D7:= D5+D6,
D8:=ds1.select1(地址, 雇员ID ==D3+B4)
D9:=ds1.select1(家庭电话, 雇员ID ==D3+B4)
C11:=”第”+A4+”行/共”+int(B1)+”行”
将C5,C6,C7,C8,C9,C10 ,C11,C12的左主格都设置为B4。
将1,3,5,6行设为隐藏行,1,2列设置为隐藏列。
这样报表设计就完成了,发布报表,在web中预览效果为
从上图可以看出,在这个报表中实现了固定列数的换行,达到了客户的需求,而且这个换行效果在导出excel的时候同样有效,显示如下图:
以上的例子中,固定的将列数设置为5,这个设置是可以变动的,可以将这个数设置为参数,供用户选择显示多少列后换行,以实现用户多样的需求。