不展现报表实现对报表的打印导出

    xiaoxiao2021-12-14  18

    

    在客户的应用中通常存在一种情况,报表展现由他们自己原有程序实现,使用润乾只是用在报表的打印和导出上。或者说在某页面上选择查询条件及报表名称,选择完成后直接点击打印或导出按钮实现对该表的打印或导出操作,润乾能满足该需求,但要对页面做下相关修改,实现方法如下: 润乾内置了几个打印或导出的js函数,如report1_print(),report1_saveAsExcel()等函数,但是如果使用这几个函数,必须要在页面上展现报表后才行,客户要求不展示报表,这里可以自己定义js函数实现相关功能。 1、 在页面上增加打印导出按钮,如: <a href=”#” onClick=”excel();return false;”>导出excel</a> <a href=”#” onClick=”word();return false;”>导出word</a> <a href=”#” onClick=”print();return false;”>打印</a> 这样页面上点击相关操作实际上调用的是该js方法。 2、 参数传递 客户系统中通常有一些参数对数据过滤,这样打印或导出时也要把该参数传到报表中计算,润乾在打印导出时取参数值时主要是通过参数缓存ID得知,即reportParamsId 所以要将客户的参数转换成reportParamsId,代码如下: String raqName=”ppp.raq”;//报表名称,到时候改成干部任免表    String reportParamsId = null;//定义reportParamsId    Hashtable hash = new Hashtable();          hash.put( “arg1″, “1111111″ );//将参数和值放到hashtable中,arg1为报表中定义的参数,保监会中改成人员id那个参数名,111111为参数值,将userid放在这     if( hash.size() > 0 ) {        //生成一个ID,并把这个ID与刚才准备的hash形成键值关系        reportParamsId = com.runqian.report4.view.ParamsPool.createParamsId();//生成参数缓存id        com.runqian.report4.view.ParamsPool.put( reportParamsId, hash );//将id放到缓存中        }    System.out.println(“reportParamsId=”+reportParamsId); 这样就生成了缓存ID,能将相关参数传递给报表服务器参与计算 3、 js函数编写 前边提到了,在页面上点击按钮时实际上是调用了js函数,所以要在页面中实现该js函数。 <script language=javascript>   function print() {   document.report1_printIFrame.location = “http://127.0.0.1:6002/demo/reportServlet?action=2&name=report1&reportFileName=<%=raqName%>&srcType=file&savePrintSetup=yes&appletJarName=runqianReport4Applet.jar&serverPagedPrint=no&mirror=no&reportParamsId=<%=reportParamsId%>”;   }   function excel() {   document.report1_saveAs_frame.location = “http://127.0.0.1:6002/demo/reportServlet?action=3&file=<%=raqName%>&columns=0&srcType=file&width=-1&height=-1&reportParamsId=<%=reportParamsId%>”    }  function word(){   document.report1_saveAs_frame.location = “http://127.0.0.1:6002/demo/reportServlet?action=7&file=<%=raqName%>&columns=0&srcType=file&reportParamsId=<%=reportParamsId%>”;   }  </script> 最后,由于打印或导出时用到了report1_saveAs_frame和report1_printIFrame,为避免js错误,在页面中增加: <iframe name=”report1_saveAs_frame” id=”report1_saveAs_frame” src=”a.html” style=”display:none”></iframe> <iframe name=”report1_printIFrame” id=”report1_printIFrame” src=”a.html” style=”position:absolute;left:-100px;top:-100px” width=50 height=50></iframe> 这样就能实现报表不展现,点相关按钮后执行打印或导出操作。

    转载请注明原文地址: https://ju.6miu.com/read-964257.html

    最新回复(0)