自定义报表组
需求描述:
客户想实现把相关联的报表在一个页面展示出来,这个可以用我们润乾提供了报表组功能来实现他的要求,但是客户发现如果数据量很大,报表组很多的时候报表展现会很慢,测试发现报表组是把所有组的报表在第一次打开的时候就把报表全部查询了一次,就出来了展现速度慢的问题。
解决办法:
在对于查询报表可以把页面分成几个标签页用DIV来控制展示,这样打开报表的时候就只查我打开报表的数据,展现慢的问题就解决了,最后在导出的时候用api的方式把几个报表生成一个报表组就可以了。
第一步:做标签页
<BODY>
<DIV id=con style=”width: 100%;height: 100%”>
<UL id=tags style=”width: 100%”>
<LI><A onClick=”selectTag(‘tagContent0′,this)” href=”javascript:void(0)”>报表一</A></LI>
<LI class=selectTag><A onClick=”selectTag(‘tagContent1′,this)” href=”javascript:void(0)”>报表二</A> </LI>
<LI><A onClick=”selectTag(‘tagContent2′,this)” href=”javascript:void(0)”>导出报表组功能</A> </LI>
</UL>
<DIV id=tagContent style=”width: 100%;height: 95%”>
<DIV class=tagContent id=tagContent0 style=”width: 100%;height: 100%”>
<iframe src=”../../reportJsp/gaoji.jsp?raq=zunei.raq” width=”100%” height=”100%”></iframe>
</DIV>
<DIV class=”tagContent selectTag” id=tagContent1 style=”width: 100%;height: 100%”>
<iframe src=”../../reportJsp/gaoji.jsp?raq=tongqibitwo.raq” width=”100%” height=”100%”></iframe>
</DIV>
<DIV class=tagContent id=tagContent2 style=”width: 100%”>
<iframe src=”zu.jsp” width=”100%” height=”100%”></iframe>
</DIV>
</DIV>
</DIV>
<SCRIPT type=text/javascript>
function selectTag(showContent,selfObj){
// 标签
var tag = document.getElementById(“tags”).getElementsByTagName(“li”);
var taglength = tag.length;
for(i=0; i<taglength; i++){
tag[i].className = “”;
}
selfObj.parentNode.className = “selectTag”;
// 标签内容
for(i=0; j=document.getElementById(“tagContent”+i); i++){
j.style.display = “none”;
}
document.getElementById(showContent).style.display = “block”;
}
</SCRIPT>
</BODY>
第二步:api生成报表组
List<String> list = new ArrayList<String>();
String path=request.getSession().getServletContext().getRealPath(“reportFiles\\高级报表”);
list.add(path+”/tongqibitwo.raq”);
list.add(path+”/zunei.raq”);
out.println(“生成”+list.size()+”个raq文件 目录 “+path+”/baobiaozu.xls”);
ExcelReport er = new ExcelReport();
for(int i = 0; i<list.size(); i++){
ReportDefine rd = (ReportDefine)ReportUtils.read(list.get(i));
Context ctx = new Context();
Engine engine = new Engine(rd,ctx);
IReport ireport = engine.calc();
er.export(“sheet_”+String.valueOf(i),ireport);
}
er.saveTo(path+”/baobiaozu.xls”);