润乾报表:不展现页面,直接将报表组导出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> 引自:润乾技术知识库 原文链接:润乾报表:不展现页面,直接将报表组导出excel 相关文章:润乾参数表单

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

分类:报表工具 — hewei @ 2009/03/04 阅读:0

没有评论 »

还没有评论。

评论 RSS Feed。 TrackBack URI

发表评论