zoukankan      html  css  js  c++  java
  • 不展现报表实现对报表的打印导出

    

    在客户的应用中通常存在一种情况,报表展现由他们自己原有程序实现,使用润乾只是用在报表的打印和导出上。或者说在某页面上选择查询条件及报表名称,选择完成后直接点击打印或导出按钮实现对该表的打印或导出操作,润乾能满足该需求,但要对页面做下相关修改,实现方法如下:
    润乾内置了几个打印或导出的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>
    这样就能实现报表不展现,点相关按钮后执行打印或导出操作。

  • 相关阅读:
    [读书笔记]Applying UML and patterns:The agile manifesto and principles
    关于CheckBoxList和RadioButtonList的几个问题
    教你背单词
    深入剖析引用参数Ref和Out
    Web的系统测试方法 (转载)
    .net Compact Framework 程序设计起步(智能设备的程序设计)
    知道Ping的最后一个返回值TTL是什么意思吗?
    精明人的四个等级[转]
    HTTP协议下用Web Service上传大文件的解决方案
    如何解决DataGrid中删除记录后分页错误
  • 原文地址:https://www.cnblogs.com/shiGuangShiYi/p/10117523.html
Copyright © 2011-2022 走看看