帆软报表批量导出到excel
由于项目及业务需要,有时候一个页面会有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。