历史版本6 :JS实现预定义导出按钮 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

FineReport 内置的导出按钮不能自定义导出的文件名称,可以用 JS 来实现自定义导出文件名,具体的应用如:JS实现自定义导出文件名称

但是如果很多模板都要实现这个功能,每个模板都去写一遍 JS,太麻烦了。所以想实现预定义一个导出按钮,所有模板都能通用。

1.2 实现思路

1)遍历参数面板控件,获取对应的参数值。

2)通过内置参数 servletURL、reportName 分别获取对应模板的路径和名称。

2. 操作步骤编辑

1)设计器菜单栏打开服务器>控件管理

11.png

2)新建一个控件,并设置一下属性。

①点击加号新建一个控件

②双击修改名称为导出

③选择控件类型为按钮控件

④控件名为export

⑤按钮类型为普通,按钮名字为导出

Snag_14952b0b.png

3)点击事件,添加参数与 JS 代码,然后点击右下角确定

Snag_14993596.png

参数如下:

servletURL:(公式类型)servletURL

reportName:(公式类型)reportName

exportName:(公式类型)indexofarray(split(indexofarray(REVERSEARRAY(split(reportName,"/")),1),".c"),1)+"_"+format(now(),"yyyyMMddHHmm")

JS 代码如下:

var url=servletURL+"?viewlet="+reportName;
$.each(this.options.form.name_widgets,function(i,item) {
      if(item.options.type!== 'label'&&item.getName()!="PARA"&&item.getName()!="SEARCH"&&item.getName()!="EXPORT") {
      url+="&"+item.getName()+"="+item.getValue();
    }
});
url+="&format=excel&extype=simple&__filename__="+exportName;
window.location=(FR.cjkEncode(url));

注:此代码实现的默认导出文件名称为:模板名字_导出时间(具体到分钟)。

4)在参数面板工具栏,点击小三角符就可以看到自定义的导出按钮,按住可以拖动到参数面板使用。

image.png

注:不支持移动端。