润乾报表 报表组使用 api 相关接口实现动态添加报表项
问题描述:
客户希望能动态增加报表组的报表项,实现在不同条件下对不同报表的一次性导出。
解决方法:
可以通过报表组的相关 api 接口实现报表组的动态编辑报表项
报表组编辑主要包括配置报表组中的报表源、设置报表组中的报表项、保存报表组、计算报表组中的报表。
报表源可以理解为设计器下图的设置:
报表项可以理解为设计器下图的设置:
主要代码如下:
// 新建一个子报表 1
SubReportConfig subReportConfig1=new SubReportConfig();
subReportConfig1.setName(“report3”); // 设子报表逻辑名
subReportConfig1.setURLType(SubReportConfig.TYPE_RELATIVE); // 设置子报表的 url 类型,值为“TYPE_RELATIVE”表示相对路径,值为 “TYPE_ABSOLUTE”表示绝对路径,值为 “TYPE_URL”表示为路径为 URL,值为 “TYPE_CUSTOM”表示为自定义路径
subReportConfig1.setURL(“cc.rpx”); // 设置子报表的 url
SubReportMetaData srm = rg.getReportMetaData(); // 定义报表组的元数据信息对象
srm.addSubReportConfig(subReportConfig1);// 增加一个子报表配置信息对象
rg.setReportMetaData(srm);
// 配置报表项
ReportGroupItem reportGroupItem1 = new ReportGroupItem(); // 新建一个报表项 1
reportGroupItem1.setTitle(“sheet3”); // 设置报表 sheet 名称
reportGroupItem1.setHtmlId(“item3”); // 设置逻辑名称
reportGroupItem1.setName(“report3”); // 设置对应的报表源, 在 SubReportMetaData 中增加了报表源,报表源的逻辑名为:report3
rg.addItem(reportGroupItem1); // 把报表项添加到报表组中
// 保存报表组
ReportGroup.write(“d:/test1.rpg”, rg);
// 报表组计算引擎
GroupEngine groupEngine = new GroupEngine(rg,cxt);
// 导出类设置
IdeReportExporter re1 = new IdeReportExporter(“D:/test.pdf”,(byte) (ReportExporter.EXPORT_PDF),null);
re1.exportReportGroup(groupEngine);