由于项目及业务需要,有时候一个页面会有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( arget, \);
form.attr(method, post);
form.attr(action,"${bmw}/ReportServer");
var input1 = $(<input>);
input1.attr( ype, hidden);
input1.attr( ame, eportlets);
input1.attr(value,FR.cjkEncode("("+items+")"));
var input2 = $(<input>);
input2.attr( ype, hidden);
input2.attr( ame, extype);
input2.attr(value, simple);
var input3 = $(<input>);
input3.attr( ype, hidden);
input3.attr( ame, format);
input3.attr(value, excel);
var input4 = $(<input>);
input4.attr( ype, hidden);
input4.attr( ame,\__filename__);
input4.attr(value, 报表批量导出);
$(ody).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__=.01.20.14.49.47.271
${bmw}/ReportServer?op=emb&resource=finereport.chart.js&__v__=.01.20.14.49.47.271
然后调用printReport()方法就可以实现将多张报表导出到一个Excel文件里的多个sheet。