我不是很清楚ireport5.6是怎么制作动态列的,但是之前看到一个同时用finereport制作过动态列,感觉大致步骤应该是差不多的。
1、打开模板
2、修改数据集
将数据集修改为:SELECT${col}FROM销量
设置参数col,默认值为*,查询出所有数据
3、表样设计
由于不确定用户选择的字段个数,因此制作模板时需要拖入所有字段。此默认参数即为查询出全部,我们将该表的5个字段依次拖入模版中,并设置数据列属性为列表;
另外不确定用户会选择哪些字段,因此拖入的字段不能用固定的列名。选中数据列所在单元格,将列名改为列序号,如下图
表头设置,A1单元格内容使用公式=INDEXOFARRAY(split($col,","),1),将$col参数转换成数组,返回数组里的第一个的值,B1、C1、D1、E1分别返回第二、三、四、五个的值,如下图:
由于列是不固定的,所以要将数据列的名称换成#1,#2,#数字代表数据对应的第几列,#1表示第一列的数据。
将报表参数删除
4、报表边框和表头背景设置
给A2-E2增加条件属性,点击要改变的属性选择边框,选择公式,在公式中输入:len($$$)!=0,即单元格有数据的话显示边框。
给A1-E1增加条件属性,点击要改变的属性选择背景和边框,选择公式,在公式中输入:len($$$)!=0,即单元格有数据的话显示背景和边框。
公式len($$$)!=0中,如果单元格数据类型为字符串,则公式应为len('$$$')!=0。
5、效果查看
希望可以帮到您,愿采纳。