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

 

版权声明:本文为lovefaner原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lovefaner/p/11890515.html