FineReport智能表格软件-JS实现大数据集导出(一)

news2025/7/21 11:30:53

前言

帆软FineReport大批量数据导出的时候,会对服务器、网络传输、数据库造成一定的压力。为了防止这样的风险,FineReport 11.0 新增了「大数据集导出」的功能,可直接根据数据集结果进行导出。

1.接口简介与注意事项

1.1 接口简介

大数据集导出接口:directExportToExcel: function (dsName, fileName, params, colNames,forMat,enCoding)

Key  

Value  

举例  

sessionID

具体 sessionID

-

dsName

数据集名称

ds1

fileName

导出文件名称,不指定使用默认的「模板名-数据集名称.xlsx」

销量

params

数据集参数 JSON,参数名:参数值

{

id: '9527',

name:'Stephen'

}

colNames

列名称用逗号分割,不指定使用数据集所有字段

col1,col2,...

forMat

注:11.0.10及以后新增

导出的格式只支持 xlsx 或 csv,可以不写,默认导出为Excel

"xlsx"

注:若不设置,则为""

enCoding

注:11.0.10及以后新增

编码格式值可以为 UTF-8 或 GBK,导出格式为 csv 时生效,默认为 UTF-8

"UTF-8"

注:若不设置,则为""

接口示例如下:

//接口为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, forMat, enCoding)

1.2注意事项

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

2)Oracle 数据库,SQL 查询时默认返回的列名是大写,所以 JS 传入 colNames 参数时,列名大小写要与其保持一致。

3)此功能无法直接导出 date/datetime 型空值,需要在 JDBC 数据连接的 URL 后添加 zeroDateTimeBehavior=convertToNull 参数。

4)建议导出的数据量不超过「1000W 行 * 20 列」,数据量超大可能会导致仅导出部分数据。

5)导出的 Excel 是通过 SQL 语句直接从数据库中获取的数据,并非报表中的数据,因此报表中设置的数据格式等无法被导出。

6)此功能不支持移动端。

7)导出超过 5s 时显示进度条。

2. 示例:大数据集导出固定参数值

 2.1 新建模板

2.1.1 新建数据集

新建普通报表,新建数据集,SQL 语句如下:

ds1:SELECT * FROM 销量 where 1=1 and 地区 in ('${area}') and 销售员 in ('${stuff}')

ds2:SELECT 销售员 FROM 销量 where 地区 in ('${area}')

2.1.2 设计报表

报表主体样式如下图所示:

2.2 设置查询控件

编辑参数面板,新增两个「标签控件」,两个「下拉复选框控件」,一个「查询控件」。如下图所示:

2.2.1 地区控件

选中第一个「下拉复选框控件」,设置控件名称为「area」,标签名称为「地区:」,数据字典设置为数据库 FRDemo 中「销量」表中的「地区」,返回值类型为「字符串」,分隔符为',',如下图所示:

2.2.2 销售员控件

选中第二个「下拉复选框控件」,设置控件名称为「stuff」,标签名称为「销售员:」,数据字典设置为数据集「ds2」中的「销售员」,返回值类型为「字符串」,分隔符为',',如下图所示:

2.3 设置导出控件

2.3.1 新增控件

新增一个「按钮控件」,点击「控件设置>属性」,设置按钮名字为「大数据集导出」,如下图所示:

2.3.2 设置点击事件

选中「按钮控件」,点击「控件设置>属性」,新增「点击事件」,输入 JavaScript 语句,如下图所示:

JavaScript 代码如下:

//接口为directExportToExcel: function (dsName, fileName, params, colNames)

//注意参数中的特殊字符需要进行url编码,比如大括号,冒号等。

var paramStr = encodeURIComponent("{area:\"华北','华东\",stuff:\"孙林','王伟\"}")

//数据集传参

var colNames = encodeURIComponent("地区,销售员,产品类型,产品,销量")

//指定导出的数据列,导出字段按此顺序排列,为空默认导出所有

_g().directExportToExcel("ds1", "销量", paramStr, colNames, "excel", " ")

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

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

2.4 效果预览

保存模板,点击「分页预览」。点击「大数据集导出按钮」,可以将「地区为华北、华东且销售员为孙伟、王林」的 ds1 数据集导出为 Excel 文件。导出内容与查询内容无关,如下图所示:

注:不支持移动端。

总结

帆软FineReport「大数据集导出」是一种占用资源少且速度快的 Excel 导出方式,无需前台数后台帆软数据表格流式导出。

该功能主要是针对明细表进行决策平台搭建,用户通过自定义 JavaScrpit 代码调用接口,实现跳过报表计算直接取数导出。实现原理如下:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis订阅发布

Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接受消息。(微信、微博、关注系统) Redis客户端可以订阅任意数量的频道 订阅发布消息图: 三个角色:消息发送者、频道、消息订…

VMware 安装Ubuntu22.04

0、前提条件 操作系统:Windows10 VMware Workstation版本:15.1.0 build-13591040 1、安装 下载地址:下载Ubuntu桌面系统 | Ubuntu 打开VMware,选择文件 -> 新建虚拟机 配置类型选择典型,单击“下一步”按钮 选择…

python操作Excel之提取字符串中的中文/过滤字符串(win32com)

Python实用篇-Excel1.前言2.关于Excel3.win32com库操作4.问题解决4.1.问题描述4.2.安装库4.3.编码与解决1.前言 本人大学期间自学了Python后,但是又因不是大数据相关专业,并且没有计划从事Python相关方向,之后就几乎没有怎么使用过Python了。…

智慧城市应用数据治理的作用有哪些?

智慧城市是基础设施发展的新热词。 主要是指在城市规划、设计、建设、管理与运营等领域中,通过物联网、云计算、大数据、空间地理信息集成等智能计算技术的应用,使得城市管理、教育、医疗、房地产、交通运输、公用事业和公众安全等城市组成的关键基础设施…

现代密码学导论-10-EAV安全

目录 3.2.1 安全的基本定义(EAV-安全) 不可区分实验 The adversarial indistinguishability experiment DEFINITION 3.8 EAV-安全的等价定义(一) DEFINITION 3.9 EAV-安全的等价定义(二) 证明EAV-安全…

[b01lers2020]Welcome to Earth

刚点进来会一直加载&#xff0c;然后跳转到了/die 看一下刚进来页面的源代码 <!DOCTYPE html> <html><head><title>Welcome to Earth</title></head><body><h1>AMBUSH!</h1><p>Youve gotta escape!</p>&l…

leetcode:1157. 子数组中占绝大多数的元素【暴力遍历 + 随机算法相信概率】

目录题目截图题目分析暴力二分随机二分总结题目截图 题目分析 一个很暴力的思路就是把每个num出现的idx记录起来&#xff0c;然后按出现的频率排序优化每次query&#xff0c;遍历每个元素和频率&#xff0c;频率如果已经比threhold小就没有看的必要&#xff0c;直接break如果比…

虎扑论坛数据分析

论坛为用户提供了相同的业余爱好&#xff0c;互动和交流的广阔平台&#xff0c;以及由此产生的庞大数据和复杂的用户交互场景也包含有价值的信息&#xff0c;本文关于虎扑论坛的帖子&#xff0c;个人信息分析&#xff0c;探讨虎扑论坛的用户是什么是什么特点&#xff1f;最近我…

Spring Cloud Stream绑定器架构解析与开发

Spring Cloud Stream绑定器架构解析与开发 根据不同的使用场景我们通常会选择相适应的消息中间件&#xff0c;例如对于日志收集场景可能会选择使用Kafka&#xff0c;对于订单场景通常会选择RocketMQ&#xff0c;不同消息中间件的客户端是不同的&#xff0c;我们需要针对不同消息…

智慧城市面临的机遇与挑战

区域中心城市建设需要智慧城市支撑 建设区域中心城市&#xff0c;除了需要具备在公路、铁路、航空等区域中心城市的枢纽硬件设施外&#xff0c;更需要充分发挥信息化强有力的凝聚和辐射作用&#xff0c;提升区域中心城市在区域交通枢纽服务、区域金融商贸服务、区域物流集散服务…

百趣代谢组学文献分享:茶褐素可促进胆固醇降解

​ 为了解决大家每逢过节必长胖的历史性问题&#xff0c;小编今天给大家介绍一篇发表于Nature Communications 的针对于普洱茶促进减肥的研究。 百趣代谢组学文献分享&#xff0c;所谓药食同源&#xff0c;普洱茶是我国西南云南地区特有的一种传统名茶&#xff0c;因其具有治…

[激光原理与应用-18]:《激光原理与技术》-4- 粒子数反转与“光”强放大的基本原理

目录 一、热平衡&#xff1a; 受激辐射 < 受激接收 二、 “光”相干放大 三、粒子数反转&#xff08;population inversion&#xff09; 四、实现粒子数反转的装置&#xff1a;泵浦 五、实现粒子数反转的条件 六、实现粒子数反转的工作物质 七、实现粒子数反转的方式…

【菜菜的sklearn课堂笔记】逻辑回归与评分卡-用逻辑回归制作评分卡-重复值和缺失值处理

视频作者&#xff1a;菜菜TsaiTsai 链接&#xff1a;【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 在银行借贷场景中&#xff0c;评分卡是一种以分数形式来衡量一个客户的信用风险大小的手段&#xff0c;它衡量向别人借钱的人&#xff08;受信人&…

「Vue系列」欢迎传送到“Teleport”星球

前言 大家好&#xff0c;我是落叶小小少年&#xff0c;我一直谨记学习不断&#xff0c;分享不停&#xff0c;输入的最好方式是输出&#xff0c;我始终相信 用最核心代码更容易理解深的技术点用通俗易懂的话&#xff0c;讲难的知识点 之前有学习并写了KeepAlive组件的实现原理…

Nginx 报错问题汇总(持续更新ing)

目录 一、nginx: [emerg] invalid number of arguments in "include" directive in C:\Program Files\nginx-1.15.4/conf/nginx.conf:61 总结&#xff1a; 二、nginx: [error] OpenEvent("Global\ngx_reload_2152") failed (5: Access is denied) 解决方…

《Java》图书管理系统(已升级)

目录 前言 效果展示 功能模块 书架 定义书的类 创建书架 用户 User用户类 AdminUser管理员 NormalUser普通用户 功能 接口 FindOperation 查找图书 AddOperation添加图书 DelOperation删除图书 BorrowOperation借阅图书 DisOperation 打印图书 RetOperation归还图…

Spring Boot 3.0.0 GA版本正式发布,期待已久的SpringBoot3发布了

期待已久的SpringBoot3.0.0发布了发布说明新版本的亮点分析1. Java 17 baseline 和 Java 19 支持2. 支持 [GraalVM native images](https://docs.spring.io/spring-boot/docs/3.0.0/reference/html/native-image.html#native-image)&#xff0c;取代实验性的 Spring Native 项目…

linux篇【11】:linux下的线程<中序>

目录 一.线程互斥 1.三个概念 2.互斥 &#xff08;1&#xff09;在执行语句的任何地方&#xff0c;线程可能被切换走 &#xff08;3&#xff09;抢票场景中的问题 &#xff08;4&#xff09;解决方案 3.加锁 &#xff08;1&#xff09;加锁介绍 &#xff08;2&#xf…

STC 51单片机39——汇编语言 按钮流水灯

每按一下按钮&#xff0c;灯就移动一个 ORG 0000H LJMP MAIN ORG 0003H ;中断矢量 LJMP INT MAIN:SETB EA ;开总中断允许“开关” SETB EX0 ;开分中断允许“开关” SETB PX0 ;高优先级 SETB IT0 ;边沿触发 MOV A,#0FEH ;给…

Linux系统编程(二)——Linux系统IO函数

在第一篇的时候写到了系统环境的搭建以及各种调试的方法&#xff0c;接下来讲述关于系统函数的使用。 目录 0x01 标准C库IO函数和Linux系统IO函数对比 一、标准C库IO函数操作流程 二、标准C库IO和Linux系统IO的关系 三、虚拟地址空间 0x02 LinuxIO函数实例 一、open()、…