比如要处理这么个场景:将数据记录横向排布为三列显示。效果图如下:
BIRT可以对数据纵向分栏,很难实现记录横向摆放并分栏的布局,有网友提出:把数据集绑定到List元素上,在网格中排列一个或多个数据字段,采用嵌入子网格等手段来实现,但都属于理论性阶段,并没有给出完整的示例,可想而知,即便能实现,也是需要写复杂的脚本和杂乱的网格拼接。工作量巨大。源数据格式如下:
一些特殊的布局版面,很难通过报表工具本身提供的功能直接实现,但如果准备出合适的数据源,就能大大降低报表设计的难度,集算器SPL就可以辅助BIRT准备好已分栏的数据,BIRT只管接收处理后的数据并展现即可。代码如下:
| A | B | C |
1 | =myDB.query("select EId,Name,Dept from emp where EId>=? and EId<=? order by EId ",begin,end) |
| |
2 | =A1.step(3,1) | =A1.step(3,2)|[null] | =A1.step(3,3)|[null] |
3 | =A2.derive(B2(#).EID:EID2,B2(#).NAME:NAME2,B2(#).DEPT:DEPT2,C2(#).EID:EID3,C2(#).NAME:NAME3,C2(#).DEPT:DEPT3) | ||
4 | return A3 |
|
|
其实还有很多类似的格式布局问题在BIRT中处理不太方便,但有集算器SPL的辅助却很简单,感兴趣可以参考:解决BIRT报表特殊布局的若干示例
集算器提供了JDBC驱动,可以很方便的与BIRT等报表工具集成,BIRT调用SPL脚本有使用和获得它的方法。
关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器。