表格制作软件FineReport教程:[14]动态列
1、 定义数据集
新建工作簿,增加数据集ds1,SQL语句为:SELECT * FROM [销量]。
2、 报表参数设置
点击模板>报表参数,增加一个参数名为col的参数,默认值为空。
3、表样设计
按照下图所示设置表样:
注:=split($col,","),$col表示参数名称,这个公式的意义是分割参数组成的字符串数组,将参数分割为多个值。
=ds1.select(#0),该公式的意义是取ds1数据源当中的所有行号,返回的结果为1,2,3……。
=ds1.value(a3, b2),该公式的意思是获取B2单元格所指定的列的列内容,其返回记录的排列顺序是按照A3当中所获取的行号进行排列。
![表格制作软件FineReport教程:[14]动态列](https://exp-picture.cdn.bcebos.com/444696013870d5410b2c45bb2e0f94fc518c8037.jpg)
4、参数界面设置
点击参数界面编辑触笔,切换到参数界面的可编辑状态,使用默认的参数界面,点击设置按钮,勾选显示参数窗体。
控件编辑风格设置
设置col参数的控件类型为下拉复选框,点击数据字典,选择形态为公式,在实际值处使用公式=TABLEDATAFIELDS("ds1"),即取ds1所有的列名为下拉复选框的值,如下图进行定义:
![表格制作软件FineReport教程:[14]动态列](https://exp-picture.cdn.bcebos.com/51cd85cec7f88a77647d6bff6e4a2f27e6eff837.jpg)
5、效果查看
点击分页预览,当选择对应的一些数据列,点击查询就展示对应选择列的数据,如下图所示:
![表格制作软件FineReport教程:[14]动态列](https://exp-picture.cdn.bcebos.com/2947750192dd3340f4537234881c99c0aefcf137.jpg)
1、打开模板
打开模板:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Parameter\DynamicCol\DynamicCol.cpt。
2、修改数据集
将数据集修改为:SELECT ${col} FROM [销量]
设置参数col,默认值为*,查询出所有数据。
3、表样设计
由于不确定用户选择的字段个数,因此制作模板时需要拖入所有字段。此默认参数即为查询出全部,我们将该表的5个字段依次拖入模板中,并设置数据列属性为列表;
另外不确定用户会选择哪些字段,因此拖入的字段不能用固定的列名。选中数据列所在单元格,将列名改为列序号,如下图:
![表格制作软件FineReport教程:[14]动态列](https://exp-picture.cdn.bcebos.com/9881b1fce186242fe1d277ac35e434daf15ee837.jpg)
4、最终模板效果如下:
注:由于列是不固定的,所以要将数据列的名称换成#1,#2,#数字代表数据对应的第几列,#1表示第一列的数据。
将报表参数删除。
![表格制作软件FineReport教程:[14]动态列](https://exp-picture.cdn.bcebos.com/bfa52adaf05e4a2336d11dae1dd818196020e237.jpg)
5、边框设置
给A1-E1增加条件属性,点击要改变的属性选择边框,选择公式,在公式中输入:len($$$)!=0,即单元格有数据的话显示边框。
注:公式len($$$)!=0中,如果单元格数据类型为字符串,则公式应为len('$$$')!=0。
6、效果查看
点击分页预览,当选择对应的一些数据列,点击查询就展示对应选择列的数据,如下图所示:
![表格制作软件FineReport教程:[14]动态列](https://exp-picture.cdn.bcebos.com/ff5c88d818196120f36defdd70f202b374d7df37.jpg)