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文件

这样便修改了报表对应的数据源

发布前报表数据源为

发布后报表数据源为