润乾报表:不展现页面,直接将报表组导出excel



润乾报表的用户提出这样的需求:点击页面上按钮后台自动计算报表组并导出excel。这样的需求可以用api实现。


解决方案

将如下代码加入报表展示的jsp文件中,假设报表组文件是reportFiles/tianbaoraq/4.rpg。

<%

//报表文件相对路径
String reportFile=application.getRealPath(“/reportFiles/tianbaoraq/4.rpg”);

//新建一个 HashMap对象存放参数,map可以存放空参数。传递参数时名称要保证和报表组用到的参数名一致。
HashMap map=new HashMap();
Enumeration paramNames = request.getParameterNames();
if(paramNames!=null){
while(paramNames.hasMoreElements()){
String paramName = (String) paramNames.nextElement();
String paramValue=request.getParameter(paramName);

//把参数名和参数值分别加入到hashmap的key和value里
map.put(paramName,paramValue);
}
}

//读取报表组文件
ReportGroup rg = ReportGroup.read(reportFile);

//报表组参数元数据
ParamMetaData rg_pmd=rg.getParamMetaData();

//设置报表组参数
if(rg_pmd !=null){
int rg_pmdNum = rg_pmd.getParamCount();
String rg_paramName=”";
for(int j=0; j<rg_pmdNum;j++){
rg_paramName=rg_pmd.getParam(j).getParamName();
for (Iterator it=map.keySet().iterator();it.hasNext();){

//遍历hashmap,将对应的参数写入报表组对象
String key= (String)it.next();
if(rg_paramName.equals(key)) {
rg_pmd.getParam(j).setValue((String)map.get(key));}
}
}
}

//获取上下文
Context context = new Context();

//计算报表组
GroupEngine gEngine = new GroupEngine(rg, context);

//获取子报表数量
int num=rg.getItemCount();

//新建excelReport对象
ExcelReport er=new ExcelReport();

//循环分别计算子报表
for(int i=0;i<num;i++){
IReport r = gEngine.get(i);

//生成子表的excel对象
er.export( “a”+i,r);
}
try{

//将多个子表的excel对象导入到一同个excel文件里。文件名拼上当前时间

Date currentTime = new Date();

//格式化日期
SimpleDateFormat formatter = new SimpleDateFormat(“yyyyMMddhhmmss”);
String dateString = formatter.format(currentTime);
er.saveTo(“c:/work/name”+dateString+”.xls”);
}catch(Exception e){
e.printStackTrace();
}
%>

<script>
alert(“导出完成。”);
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值