不展现报表实现对报表的打印导出
在客戶的應用中通常存在一種情況,報表展現由他們自己原有程序實現,使用潤乾只是用在報表的打印和導出上。或者說在某頁面上選擇查詢條件及報表名稱,選擇完成后直接點擊打印或導出按鈕實現對該表的打印或導出操作,潤乾能滿足該需求,但要對頁面做下相關修改,實現方法如下:
潤乾內置了幾個打印或導出的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://www.cnblogs.com/shiGuangShiYi/p/10117523.html
總結
以上是生活随笔為你收集整理的不展现报表实现对报表的打印导出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Angularjs API指令查询
- 下一篇: IIS写权限漏洞 (HTTP PUT方法