不展现报表实现对报表的打印导出
在客戶的應(yīng)用中通常存在一種情況,報(bào)表展現(xiàn)由他們自己原有程序?qū)崿F(xiàn),使用潤(rùn)乾只是用在報(bào)表的打印和導(dǎo)出上。或者說在某頁面上選擇查詢條件及報(bào)表名稱,選擇完成后直接點(diǎn)擊打印或?qū)С霭粹o實(shí)現(xiàn)對(duì)該表的打印或?qū)С霾僮?#xff0c;潤(rùn)乾能滿足該需求,但要對(duì)頁面做下相關(guān)修改,實(shí)現(xiàn)方法如下:
潤(rùn)乾內(nèi)置了幾個(gè)打印或?qū)С龅膉s函數(shù),如report1_print(),report1_saveAsExcel()等函數(shù),但是如果使用這幾個(gè)函數(shù),必須要在頁面上展現(xiàn)報(bào)表后才行,客戶要求不展示報(bào)表,這里可以自己定義js函數(shù)實(shí)現(xiàn)相關(guān)功能。
1、?在頁面上增加打印導(dǎo)出按鈕,如:
<a href=”#” onClick=”excel();return false;”>導(dǎo)出excel</a>
<a href=”#” onClick=”word();return false;”>導(dǎo)出word</a>
<a href=”#” onClick=”print();return false;”>打印</a>
這樣頁面上點(diǎn)擊相關(guān)操作實(shí)際上調(diào)用的是該js方法。
2、?參數(shù)傳遞
客戶系統(tǒng)中通常有一些參數(shù)對(duì)數(shù)據(jù)過濾,這樣打印或?qū)С鰰r(shí)也要把該參數(shù)傳到報(bào)表中計(jì)算,潤(rùn)乾在打印導(dǎo)出時(shí)取參數(shù)值時(shí)主要是通過參數(shù)緩存ID得知,即reportParamsId
所以要將客戶的參數(shù)轉(zhuǎn)換成reportParamsId,代碼如下:
String raqName=”ppp.raq”;//報(bào)表名稱,到時(shí)候改成干部任免表
?? String reportParamsId = null;//定義reportParamsId
?? Hashtable hash = new Hashtable();
???????? hash.put( “arg1″, “1111111″ );//將參數(shù)和值放到hashtable中,arg1為報(bào)表中定義的參數(shù),保監(jiān)會(huì)中改成人員id那個(gè)參數(shù)名,111111為參數(shù)值,將userid放在這
??? if( hash.size() > 0 ) {
?????? //生成一個(gè)ID,并把這個(gè)ID與剛才準(zhǔn)備的hash形成鍵值關(guān)系
?????? reportParamsId = com.runqian.report4.view.ParamsPool.createParamsId();//生成參數(shù)緩存id
?????? com.runqian.report4.view.ParamsPool.put( reportParamsId, hash );//將id放到緩存中
?????? }
?? System.out.println(“reportParamsId=”+reportParamsId);
這樣就生成了緩存ID,能將相關(guān)參數(shù)傳遞給報(bào)表服務(wù)器參與計(jì)算
3、?js函數(shù)編寫
前邊提到了,在頁面上點(diǎn)擊按鈕時(shí)實(shí)際上是調(diào)用了js函數(shù),所以要在頁面中實(shí)現(xiàn)該js函數(shù)。
<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>
最后,由于打印或?qū)С鰰r(shí)用到了report1_saveAs_frame和report1_printIFrame,為避免js錯(cuò)誤,在頁面中增加:
<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>
這樣就能實(shí)現(xiàn)報(bào)表不展現(xiàn),點(diǎn)相關(guān)按鈕后執(zhí)行打印或?qū)С霾僮鳌?/p>
轉(zhuǎn)載于:https://www.cnblogs.com/shiGuangShiYi/p/10117523.html
總結(jié)
以上是生活随笔為你收集整理的不展现报表实现对报表的打印导出的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Angularjs API指令查询
- 下一篇: IIS写权限漏洞 (HTTP PUT方法