API修改报表数据源
客户使用autobig方式展现报表,无法使用contextName标签来动态改变数据源,可以使用api直接修改报表文件,具体代码如下
//修改数据源
String reportPath = request.getRealPath(“/reportFiles”+report);//读取报表文件
ReportDefine rd = (ReportDefine)ReportUtils.read(reportPath);
DataSetMetaData dsmd = rd.getDataSetMetaData();
//****************************//多数据集可以添加循环与逻辑判断
DataSetConfig dsc = dsmd.getDataSetConfig(0);//读取数据集设置,从0开始
//****************************//可以添加客户自己的业务逻辑
dsc.setDataSourceName(“demo”);//更改数据集对应的数据源
dsmd.setDataSetConfig(1, dsc);//保存设置
rd.setDataSetMetaData(dsmd);//保存ReportDefine对象
ReportUtils.write(reportPath, rd);//保存修改后的raq文件
这样便修改了报表对应的数据源
发布前报表数据源为
发布后报表数据源为