JS实现预定义导出按钮

  • 文档创建者:axing
  • 编辑次数:7次
  • 最近更新:Leo.Tsai 于 2020-07-21
  • 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"),此处自定义文件名。

    JavaScript 代码如下:

    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

    5)效果预览

    1595318613270122.gif

    注:不支持移动端。

    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!