润乾集算报表提供了将多个报表组合到一起显示的报表组功能。使用报表组可以很方便地将同类报表组合到一起展现、导出及打印。下面来看下报表组的使用。
报表组制作
新建报表组
首先准备要加入报表组中的报表,这里使用订单表和订单明细表,两表均带有订单ID范围参数bid和eid。新建报表组,编辑报表源:
报表来源URL可以是绝对路径,也可以是相对路径(相对于应用资源路径),这里我们使用相对路径。
增加参数
为报表组设置参数如下:
编辑报表项
分别设置两个报表项,更改报表项标题并设置参数,将报表组参数传递给各报表项:
设置后的报表组(group.rpg)如下:
到这里报表组的设置已经完成,报表组中的订单表和订单明细表制作可参考集算报表相关文档。
由于报表组中带有参数,发布到页面需要参数输入界面,所以这里再制作一个参数模板(group_arg.rpx),联合报表组发布:
报表组展现
编辑报表组展现的JSP(showReportGroup.jsp):
<%@ pagecontentType="text/html;charset=GBK" %> <%@ tagliburi="/WEB-INF/raqsoftReport.tld" prefix="report" %> <%@ pageimport="java.io.*"%> <%@ pageimport="java.util.*"%> <%@ pageimport="com.raqsoft.report.usermodel.Context"%> <%@ pageimport="com.raqsoft.report.util.ReportUtils"%> <%@ pageimport="com.raqsoft.report.model.ReportDefine"%> <%@ pageimport="com.raqsoft.report.usermodel.ReportGroup"%> <%@ pageimport="com.raqsoft.report.usermodel.SubReportConfig"%> <html> <link type="text/css"href="css/style.css" rel="stylesheet"/> <body topmargin=0leftmargin=0 rightmargin=0 bottomMargin=0> <% request.setCharacterEncoding("GBK" ); String report = request.getParameter("rpg" ); StringreportFileHome=Context.getInitCtx().getMainDir(); StringBuffer param=new StringBuffer(); //保证报表名称的完整性 int iTmp = 0; if( (iTmp =report.lastIndexOf(".rpg")) <= 0 ){ report = report +".rpg"; iTmp = 0; } Enumeration paramNames =request.getParameterNames(); if(paramNames!=null){ while(paramNames.hasMoreElements()){ String paramName =(String) paramNames.nextElement(); StringparamValue=request.getParameter(paramName); if(paramValue!=null){ //把参数拼成name=value;name2=value2;.....的形式 param.append(paramName).append("=").append(paramValue).append(";"); } } } //以下代码是检测这个报表是否有相应的参数模板 String paramFile =report.substring(0,iTmp)+"_arg.rpx"; File f=newFile(application.getRealPath(reportFileHome+ File.separator +paramFile)); %> <jsp:includepage="grouptoolbar.jsp" flush="false" /> <tableid="rpt" width=100%height=100%><tr><td> <% //如果参数模板存在,则显示参数模板 if( f.exists() ) { %> <table id=param_tblalign=center><tr><td> <report:paramname="form1" paramFileName="<%=paramFile%>" needSubmit="no" params="<%=param.toString()%>" /> </td> <td><ahref="javascript:_submit( form1 )"><imgsrc="../p_w_picpaths/query.jpg" border=nostyle="vertical-align:middle"></a></td> </tr></table> <% } %> <tablealign=center> <tr><td> <report:groupgroupFileName="<%=report%>" funcBarLocation="top" exceptionPage="/reportJsp/myError2.jsp" params="<%=param.toString()%>" appletJarName="raqsoftReportApplet.jar" /> </td></tr> </table> <scriptlanguage="javascript"> //设置分页显示值 document.getElementById( "t_page_span").innerHTML=report1_getTotalPage(); document.getElementById("c_page_span" ).innerHTML=report1_getCurrPage(); </script> </body> </html>
将以上报表和报表组放置到报表应用的应用资源路径,如我这里的D:\Program Files\raqsoft\report\webapps\demo\reportFiles,启动应用,访问发布报表组页面,如:http://192.168.1.100:6666/demo/reportJsp/showReportGroup.jsp?rpg=group.rpg可以看到报表组展现效果:
报表组导出
页面发布后,报表组可以导出Excel、PDF、WORD等文件,在发布报表组的页面<report:group>标签下加入:
needSaveAsExcel="yes"
needSaveAsWord="yes"
needSaveAsPdf="yes"
即可在页面中增加相应按钮,已导出Excel为例,导出效果如下:
报表组打印
与导出类似,在<report:group>标签中加入needPrint="yes"属性即可加入报表打印按钮,报表组打印时会提示打印组内某个或某些报表,如下图示:
用户可以通过“预览”查看报表打印预览效果,通过“打印”完成报表组的打印操作。