由于项目及业务需要,有时候一个页面会有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。