润乾报表 API 后台导出报表组到 excel
最近遇到有客户需要实现后台运算导出报表组到 excel 的需求。
之前做过单个报表后台导出到 excel 的示例,思路是一致的,代码略有不同。
需要将报表组的各个子报表项计算并导出到同一个 excel 的不同 sheet 页中。
示例使用的是内建数据集的报表文件,所以注释掉了数据库连接池的配置和参数部分
核心代码:
/ /读取报表模板
Context cxt = new Context(); //构建报表引擎计算环境
cxt.setMainDir("F:\\\Program Files\\\raqsoftdql614\\\report5\\\web\\\webapps\\\demo\\\WEB-INF\\\reportFiles");//设置主路径,如果有相对路径的读取配置,那么必配此项
String reportGroup1 = "F:\\\Program Files\\\raqsoftdql614\\\report5\\\web\\\webapps\\\demo\\\WEB-INF\\\reportFiles\\\自定义.rpg"; //读取报表文件
//设置授权文件
File flic = new File("E:/授权文件/新授权/润乾报表内部**[测试](http://lib.csdn.net/base/softwaretest)**版.lic");
FileInputStream lis = new FileInputStream(flic);
Sequence.readLicense( Sequence.P_RPT, lis);
ReportGroup rg = ReportUtils.readReportGroup(reportGroup1);
//设置数据库连接池
/*Connection con = null;
try{
Driver driver = (Driver) Class.forName("org.hsqldb.jdbcDriver").newInstance();
DriverManager.registerDriver(driver);
con= DriverManager.getConnection("jdbc:hsqldb:hsql://127.0.0.1/dqldemo","sa","");
}catch (Exception e){
e.printStackTrace(); }
cxt.setDefDataSourceName("demo");
cxt.setConnection("demo", con);
DataSourceConfig dsoc = new DataSourceConfig(DBTypes.getDBType("hsql"), true, "GBK", "GBK", false);
cxt.setDataSourceConfig("demo", dsoc);
//设置参数
ParamMetaData pmd = rd.getParamMetaData(); //从报表定义中取得参数元对象ParamMetaData
String paramOrMocrName = "";
if(pmd != null){
paramOrMocrName = pmd.getParam(0).getParamName(); //获取参数名
cxt.setParamValue(paramOrMocrName,"77777"); //设参数值
}
*/
//运算报表
GroupEngine groupEngine = new GroupEngine(rg,cxt);
//获取子报表数量
int num=rg.getItemCount();
//新建excelReport对象
ExcelReport er=new ExcelReport();
//循环分别计算子报表
for(int i=0;i<num;i++){
IReport r = groupEngine.getReport(i);
//生成子表的excel对象
er.export( "a"+i,r);
}
er.saveTo("F:/moreSheetInExcel.xls"); //输出到指定文件
21 年 10 月份之后的版本,授权加载方法改为:
// 设置报表授权文件
String fraq = “D:/report.xml”;
ExtCellSet.readLicense(fraq);