由於項目及業務需要,有時候一個頁面會有n張報表,那麼這個時候就需要一鍵導出功能(方便省事)
首先項目肯定要集成帆軟報表工具,帆軟的各種jar包以及靜態資源(js,css)等也會集成到項目裏。
直接上代碼,(主要有兩個方法)
function printReport(name, sex, age ){ var params=""; if(""!=name){ params+=",NAME:"+name; } if(""!=sex){ params+=",SEX:"+sex; } if(""!=age){ params+=",AGE:"+age; } var items="{reportlet:zxt/test/test1.cpt"+params+"}" +",{reportlet:zxt/test/test2.cpt"+params+"}"; doExport(items); } function doExport(items){ var form =$("<form>"); form.attr('style','display:none'); form.attr('target', ''); form.attr('method', 'post'); form.attr('action',"${bmw}/ReportServer"); var input1 = $('<input>'); input1.attr('type', 'hidden'); input1.attr('name', 'reportlets'); input1.attr('value',FR.cjkEncode("("+items+")")); var input2 = $('<input>'); input2.attr('type', 'hidden'); input2.attr('name', 'extype'); input2.attr('value', 'simple'); var input3 = $('<input>'); input3.attr('type', 'hidden'); input3.attr('name', 'format'); input3.attr('value', 'excel'); var input4 = $('<input>'); input4.attr('type', 'hidden'); input4.attr('name','__filename__'); input4.attr('value', '報表批量導出'); $('body').append(form); form.append(input1); form.append(input2); form.append(input3); form.append(input4); form.submit(); }
${bmw} 指的是項目的訪問路徑,另外FR.cjkEncode()用的是帆軟報表自帶的方法,需要導入帆軟提供的兩個js文件
${bmw}/ReportServer?op=emb&resource=finereport.js&inter=zh_CN&__fr_locale__=&__v__=2017.01.20.14.49.47.271
${bmw}/ReportServer?op=emb&resource=finereport.chart.js&__v__=2017.01.20.14.49.47.271
然後調用printReport()方法就可以實現將多張報表導出到一個Excel文件裏的多個sheet。