一:实现思路
先读取多个报表,分别计算多个报表,然后把多个结果添加到导出列表,最后实现导出到excel的多个sheet中。
二:实现步骤(以两个报表为例)
1:首先制作两个报表one.raq和two.raq,如下图:
One.raq
Two.raq
2:利用快逸提供的方法读入两个报表,读入计算并导出,代码如下:
<%@page contentType=”text/html;charset=GBK” %>
<%@taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>
<%@page import=”com.runqian.report4.model.ReportDefine”%>
<%@page import=”com.runqian.report4.model.engine.ExtCellSet”%>
<%@page import=”com.runqian.report4.usermodel.Context”%>
<%@page import=”com.runqian.report4.usermodel.Engine”%>
<%@page import=”com.runqian.report4.usermodel.IReport”%>
<%@page import=”com.runqian.report4.util.ReportUtils”%>
<%@page import=”com.runqian.report4.usermodel.PageBuilder”%>
<%@page import=”com.runqian.report4.view.excel.ExcelReport”%>
<html>
<bodytopmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<%
//创建context对象,设置报表的路径
Contextctx = new Context();
Stringpath = “D:/Program Files/reportHome/webapps/demo/reportFiles/one.raq”;
//读入报表
ReportDefinerd = (ReportDefine) ReportUtils.read(path);
Engineengine = new Engine(rd, ctx);
//计算报表
IReportreport = engine.calc();
Contextctx1 = new Context();
Stringpath1 = “D:/Program Files/reportHome/webapps/demo/reportFiles/two.raq”;
ReportDefinerd1 = (ReportDefine) ReportUtils.read(path1);
Engineengine1 = new Engine(rd1, ctx1);
IReportreport1 = engine1.calc();
ExcelReport er = new ExcelReport();
//导出的excel文件命名为moreSheetInExcel.xls,包括两个sheet,一个为one,另一个为two,保存在D盘下
er.export(”one”, report);
er.export(”two”, report1);
er.saveTo(”D:/moreSheetInExcel.xls”); //输出到指定文件
out.print(”导出成功!”);
%>
</body>
</html>
三:运行此jsp,执行其中的代码
当页面中出现导出成功时,就说明两个报表已经成功导入到了moreSheetInExcel.xsl,并分别存储在one sheet和twosheet中,效果如下:
四:总结
此示例只是简单实现这一需求,具体项目中可以统一写一个方法类,动态传入要导出的报表名字,并且动态设置保存路径。