写了一个js脚本实现批量导出,不想要浏览器打开新页面,而是在当前页面直接跳出选择保存路径。怎么实现?

// 获取参数模版中的控件值

var CODE_CODE = _g().getParameterContainer().getWidgetByName("CODE_CODE").getValue();

// 将控件值用逗号分割成数组

var arr = CODE_CODE.split(",");

// 使用for循环实现批量导出

for(var i = 0; i < arr.length; i++){\

// 设置导出属性为Excel导出,格式为原样导出

var pars = '&format=excel&extype=simple';

// 获取当前预览报表的url地址

var currentUrl = new URL(window.location.href);

// 获取url地址中的参数部分

var searchParams = new URLSearchParams(currentUrl.search);

// key为设置查询的参数名,value为添加或者修改参数的值

var arr1 = {CODE_CODE:arr[i]};

// 使用for..in..循环添加或者修改指定的参数值

for(var key in arr1){

if(arr1.hasOwnProperty(key)){

searchParams.set(key,arr1[key]);

}

};

// 将修改过后的url参数部分字符串化

currentUrl.search = searchParams.toString();

// 使用newUrlHref接收拼接的url地址

var newUrlHref = currentUrl.origin + currentUrl.pathname + '?' + searchParams.toString();

// 打开新url地址的网页

window.open(newUrlHref + pars);

}

FineReport 帆软用户klk 发布于 昨天 16:02
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
华莉星宸Lv7高级互助
发布于昨天 16:07

参考这个直接导出

URL直接导出报表 https://help.fanruan.com/finereport/doc-view-1142.html

image.png

  • 帆软用户klk 帆软用户klk(提问者) 我可以把window.open改成window.location吧
    2024-09-26 16:17 
  • 华莉星宸 华莉星宸 回复 帆软用户klk(提问者) 可以的
    2024-09-26 16:18 
  • 帆软用户klk 帆软用户klk(提问者) 回复 华莉星宸 好像不太行,会刷新当前页面,我传了两个参数进来,点了导出触发js脚本后这个页面就刷新两次,有点像覆盖了,也没有导出
    2024-09-26 16:34 
最佳回答
0
CD20160914Lv8专家互助
发布于昨天 16:13

你按下面的格式修改,把你的循环套进去就行了 ,这个不会打开新窗口的

var enddate=this.options.form.getWidgetByName("结束日期").getValue();

var bm=this.options.form.getWidgetByName("citycode").getValue();//复选框

//报表路径和名称,你自己改,只改viewlet=后面的,前面的不要动!

------------------以下套循环-------------------------------

var url = ("${servletURL}?viewlet=cs/detail.cpt");

//传参数和导出excel的格式设置,以及文件名称

var config={

startdate:startdate,

enddate:enddate,

city_code:bm,

format:"excel",

extype:"simple",

__filename__:"导出文件测试"//自定义导出的文件名称你自己去修改

};

FR.doHyperlinkByPost(url,config,"_self");//传参数执行导出

  • 帆软用户klk 帆软用户klk(提问者) FR.doHyperlinkByPost(url,config,"_self");这段代码我放入循环里了,然后好像只执行了一次,只导出了一个文件
    2024-09-26 16:42 
  • CD20160914 CD20160914 回复 帆软用户klk(提问者) 不会的,循环你循环没有写对。或者数据只有一个,不然不可能的。我测试过的,只要循环套正确是可以的
    2024-09-26 16:44 
  • 帆软用户klk 帆软用户klk(提问者) 回复 CD20160914 city_code:bm,这个是有多个参数,只是用逗号分隔开的?传的时候直接传进去吗
    2024-09-26 16:47 
  • CD20160914 CD20160914 回复 帆软用户klk(提问者) 我上面的示例bm是复选框,你设置分隔符号为','就行。会传多个的
    2024-09-26 16:48 
  • 3关注人数
  • 59浏览人数
  • 最后回答于:昨天 16:13
    请选择关闭问题的原因
    确定 取消
    返回顶部