Java报表工具设计之动态列
用FineReport举个用列名称控制显示列的例子。
效果就是数据库里存了好多的数据列,但是不想都显示出来,只想要想看的固定的那几个列,所以我就想要访问报表的时候,他把可以选看的列名称都显示给我,我可以自己选几个想看的列。
如图:
这个图里面,有六个列可以选,课程号,课程,年纪,姓名等等,但是我只想看课程号,名字和他们对应的性别,这里我就多选这三个列,得到的效果见下图
首先 把数据导入到Finereport里来。直接select * from StScore.
StScore这个表里有六个列: Class No, Name, Sex, Course, Grade, Student No.
然后新建一张空白的自由报表。 定义一个参数,名称为Para。类型选为复选框,如图:
然后我们来定义一个报表数据字典,选择定义|自定义,然后写入6个列名,分别为复选框中的可选项,确定。设置如下图:
在B2单元格中,写入一个公式:=split($para, “,”)。意思就是啊在B1单元格中写入了一个函数split ( )。该函数在此处可以获取从参数当中传入的列名作为值,并将每一个值写一个单元格。
然后我们鼠标选中B2单元格,将他设置为从左到右扩展。
在A3单元格中写入如下公式:=ds1.select(#0),这个公式的意义就是取得ds1数据源当中的所有行号。就是呢ds1当中有多少行数据,那么这个公式返回该结果的行号,1,2,3……
把A3单元格设置为从上到下扩展。
然后在B3单元格中写入如下公式:=ds1.column(b2),这个公式的意义就是要获取B2单元格所指定的列的列内容。其返回记录的排列顺序是按照A3当中所获取的行号进行排列的。
预览就有我们要的效果喽~搞定!



