大数据集导出

编辑
  • 文档创建者:jiangsr
  • 浏览次数:4976次
  • 编辑次数:8次
  • 最近更新:Kevin-s 于 2019-11-08
  • 1. 版本

      报表服务器版本JAR 包
    10.02018-12-27

    2. 概述

    2.1 应用场景

    目前 FineReport 对于大数据量的模板导出时,可能存在时间过长或内存占用过大的情况。

    为了防止这样造成宕机的风险,FineReport 10.0 新增了「大数据集导出」的功能,可直接根据数据集结果进行导出。

    2.2 功能描述

    此功能主要是针对明细表,它可以实现跳过报表计算直接取数导出。

    3. 思路

    通过自定义 JS 调用接口,实现原理如下:

    1)使用 SXSSFWorkbook 流式行导出,速度快;

    2)使用生产者消费者模式,一个线程用于取数,把数据行存在队列中,另一线程读取行导出;

    4. 接口

    注:此功能只支持关系型数据库,且 SQL Server 数据库需要把游标设置为服务器游标

    Key  Value  举例  
    sessionID具体sessionID  
    dsName数据集名称ds1
    params数据集参数 JSON,参数名:参数值{

    id: '9527',

    name:'Stephen'

    }

    columns列名称用逗号分割,不指定使用数据集所有字段col1,col2,...
    fileName导出文件名称,不指定使用默认的“模板名-数据集名称.xlsx”  

    接口示例如下:

    //接口为directExportToExcel: function (dsName, fileName, params, colNames)
    //注意参数中的特殊字符需要进行url编码,比如大括号,冒号等。
    var paramStr = encodeURIComponent("{param1:1,param2:\"21','22\",param3:\"text\",...}")
    //数据集传参,字符串参数建议写成格式\"text\"
    var colNames = encodeURIComponent("col1, col2, col3,...")//指定导出的数据列,导出字段按此顺序排列,为空默认导出所有
    _g().directExportToExcel("数据集名称", "导出文件名称", paramStr, colNames)

    5. 示例一:导出数据集参数为单个值

    5.1 模板设置

    打开模板 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\使用常用参数组合.cpt

    5.2 控件设置

    在参数面板中添加导出按钮,并新增点击事件,如下图所示:

    1562816716987200.png

    JS 代码如下:

    //接口为directExportToExcel: function (dsName, fileName, params, colNames)
    //注意参数中的特殊字符需要进行url编码,比如大括号,冒号等。
    var paramStr = encodeURIComponent("{area:华北,province:河北}")
    //数据集传参
    var colNames = encodeURIComponent("订单ID,货主名称,货主地区,货主省份,货主城市,货主地址")
    //指定导出的数据列,导出字段按此顺序排列,为空默认导出所有
    _g().directExportToExcel("ds1","订单",paramStr,colNames)

    注:这里的参数名是指模板参数名,而不是数据集中的数据列名。

    5.3 实现效果

    点击导出按钮,可以将 ds1 数据集导出来,如下所示:

    111.png

    6. 示例二:导出数据集参数为多个值

    6.1 模板设置

    打开模板 %FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\使用常用参数组合.cpt

    6.2 控件设置

    在参数面板中添加导出按钮,并新增点击事件,如下图所示:

    1562817491188305.png

    JS 代码如下:

    //接口为directExportToExcel: function (dsName, fileName, params, colNames)
    //注意参数中的特殊字符需要进行url编码,比如大括号,冒号等。
    var paramStr = encodeURIComponent("{area:\"华北','华东\",province:\"北京','山东\"}")
    //数据集传参
    var colNames = encodeURIComponent("订单ID,货主名称,货主地区,货主省份,货主城市,货主地址")
    //指定导出的数据列,导出字段按此顺序排列,为空默认导出所有
    _g().directExportToExcel("ds1","订单",paramStr,colNames)

    注:在sql参数值的前后需要加上 \ ,防止被解析。

    注:这里的参数名是指模板参数名,而不是数据集中的数据列名。

    6.3 实现效果

    点击导出按钮,可以将 ds1 数据集导出来,如下所示:

    222.png

    7. 已完成模板

    7.1 示例一模板

    已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\大数据集导出-单数据.cpt

    模板下载请点击:大数据集导出-单数据.cpt

    7.2 示例二模板

    已完成模板,可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\大数据集导出-多数据.cpt

    模板下载请点击:大数据集导出-多数据.cpt


    附件列表


    主题: 报表应用
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]