FineReport帆软报表的表格动态列的实现

news2025/1/12 19:04:14

关于帆软

帆软报表(FineReport)是一款企业级的数据报表工具,旨在帮助用户快速创建、设计和生成各种类型的报表。它提供了丰富的报表设计功能和灵活的数据展示方式,适用于各种行业和业务需求

以下是帆软报表的一些主要特点和功能:
  1. 报表设计:帆软报表提供了直观的可视化报表设计界面,用户可以通过拖拽、配置和排版等方式轻松设计报表布局,包括表格、图表、文本框、图片等元素。

  2. 数据源连接:帆软报表支持多种数据源连接,包括数据库、Excel、CSV、JSON、XML等,用户可以从不同的数据源中获取数据并进行报表展示。

  3. 强大的数据处理和计算:帆软报表提供了丰富的数据处理和计算功能,包括数据过滤、排序、分组、汇总、计算字段、公式等,可以对数据进行灵活的操作和处理。

  4. 多样化的报表展示方式:帆软报表支持多种报表展示方式,包括表格、图表(柱状图、折线图、饼图等)、交叉表、地图、仪表盘等,用户可以根据需要选择合适的展示方式。

  5. 动态参数和条件查询:帆软报表支持动态参数和条件查询,用户可以在报表中定义参数,根据用户输入的条件动态展示数据,实现灵活的数据筛选和查询。

  6. 报表导出和发布:帆软报表支持将报表导出为多种格式,包括PDF、Excel、Word、HTML等,用户可以方便地将报表分享给其他人或发布到Web端进行在线访问。

  7. 安全和权限控制:帆软报表提供了严格的安全和权限控制机制,用户可以设置报表的访问权限、数据权限,保证报表数据的安全性和机密性。

帆软报表具有良好的可扩展性和定制化能力,可以根据不同的需求进行二次开发和定制,满足企业的特定报表需求。

官方网站地址

帆软官网 https://www.fanruan.com/
FineReport帮助文档 https://help.fanruan.com/finereport10.0/

帆软动态列的实现

前言

下面才是重点,在开发过程中,无论是帆软还是正常写代码,表格的动态列都最常见不过了。

表格动态列是在写表格表体数据多时候,可以根据数据的动态变化来动态生成列的功能。通常情况下,表格的列是在设计报表时静态定义的,即在设计阶段确定了报表的列数和列名。但是在某些情况下,数据的列数和列名可能会根据实际情况动态变化,这时就可以使用表格动态列来实现灵活的列生成。

使用表格动态列的好处是可以适应数据的动态变化,无需事先确定列数和列名,从而实现报表的灵活性和扩展性。例如,当报表需要展示不同时间段的销售数据,每个时间段的列数和列名都不同,就可以使用表格动态列来根据数据动态生成相应的列。

image.png

下面为大家介绍动态列的实现:

接口返回格式

首先接口返回格式如下,主要分为header和lines两部分,其中header为动态列的数据,lines为表体数据。本次没用sql,用的是json数据集的形式
详细介绍见代码下面:

{
    "code": 0,
    "msg": null,
    "data": {
        "header": [
            {
                "titel": "EarNumber",
                "titelName": "批次",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "ProductName",
                "titelName": "商品代号",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "PigHouseUnitName",
                "titelName": "栋舍",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "AbstractName",
                "titelName": "摘要",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "PigCount",
                "titelName": "数量",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "DayAge",
                "titelName": "饲养日龄",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "PigCost",
                "titelName": "猪成本",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "MaterialCost",
                "titelName": "饲料",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "MedicantCost",
                "titelName": "兽药",
                "isDisplay": true,
                "fartherHeader": null
            },
            {
                "titel": "VaccineCost",
                "titelName": "疫苗",
                "isDisplay": true,
                "fartherHeader": nuÏll
            },
            {
                "titel": "TotalCost",
                "titelName": "合计",
                "isDisplay": true,
                "fartherHeader": ""
            }
        ],
        "lines": [
            {
                "NumericalOrderDetail": "2309060914020000195",
                "PigFarmName": "好牧猪场",
                "DataDate": "2023-07-01 00:00:00",
                "PigID": "2109231132210000180",
                "EarNumber": "保育",
                "ProductName": "保育",
                "PigHouseUnitName": "后备舍2",
                "AbstractType": "137",
                "AbstractName": "期初",
                "PigCount": "127",
                "DayAge": "527",
                "PigCost": "5979.49",
                "MaterialCost": "284842.18",
                "MedicantCost": "18293.54",
                "VaccineCost": "14105.16",
                "Item2022021710002": "41979.72",
                "Item2022021710003": "5461.58",
                "Item2022021710004": "59454.09",
                "Item2022021710001": "58244.51",
                "Item2022021710005": "0.00",
                "TotalCost": "488360.27"
            },
            {
                "NumericalOrderDetail": "2309060914020000196",
                "PigFarmName": "猪场",
                "DataDate": "2023-07-01 00:00:00",
                "PigID": "2302251632410000180",
                "EarNumber": "HM20221228",
                "ProductName": "保育",
                "PigHouseUnitName": "后备舍3",
                "AbstractType": "137",
                "AbstractName": "期初",
                "PigCount": "50",
                "DayAge": "0",
                "PigCost": "2295.26",
                "MaterialCost": "62144.54",
                "MedicantCost": "3735.40",
                "VaccineCost": "3464.36",
                "Item2022021710002": "10171.55",
                "Item2022021710003": "1184.04",
                "Item2022021710004": "3980.92",
                "Item2022021710001": "14278.93",
                "Item2022021710005": "0.00",
                "TotalCost": "101255.00"
            },
            {
                "NumericalOrderDetail": "2309060914020000673",
                "PigFarmName": "二期育肥场",
                "DataDate": "2023-07-01 00:00:00",
                "PigID": "2305241021320000180",
                "EarNumber": "2023.5.24一期转二期",
                "ProductName": "育肥",
                "PigHouseUnitName": "保育4",
                "AbstractType": "137",
                "AbstractName": "期初",
                "PigCount": "635",
                "DayAge": "19685",
                "PigCost": "17127.80",
                "MaterialCost": "279188.19",
                "MedicantCost": "28442.98",
                "VaccineCost": "14573.72",
                "Item2022021710002": "35309.63",
                "Item2022021710003": "2286.48",
                "Item2022021710004": "4236.34",
                "Item2022021710001": "75760.11",
                "Item2022021710005": "0.00",
                "TotalCost": "456925.25"
            }
        ]
    }
}
首先 header 就是动态列的列条数,其中:
  • title 表示动态列绑定的字段 key,同表格key 一样
  • titelName 为动态列展示的列名,给用户展示
  • isDisplay 为是否展示(可选-可要可不要)
  • fartherHeader 为父级的表头 (可选-可要可不要)

image.png

其次是lines这个数组,对应的就是表格数据源,一个对象为一行数据,其他字段可以不看
  • 画圈的部分也就是Item2022021710001…字段需要和表头的header 数组重的title对应上
  • 总体思想数据源是平铺的形式,非嵌套格式

image.png

帆软配置使用

首先打开帆软报表.cpt 文件,红色圈内为动态列
image.pngimage.png

第一步:配置接口数据源
左下角处点击加号

image.png

选择 json 数据集

image.png

配置接口
红色框 1 为自定义的名字,这里可以随意起名,主要用处在稍后的表体取数
红色框 2 为定义的接口,需要提前定义好(定义接口不在这里展示叙述)
红色框 3 为接口数据源$为接口拿到的全量数据,data.header为动态列的数组

image.png

第二步:动态列表头
点击表头,选择插入数据列,也就是用接口返回的数据

image.png

双击该表头,出现弹窗
其中数据集为刚刚配置的 json 数据集名称,需要对应上
数据列也就是接口返回的 titleName,需要和接口字段对应上
扩展方向为横向扩展

image.png

表头设置完成后设置表体
点击左侧插入行,需要插入一行,这里和 excel 插入行几乎一样
这一行的作用主要是绑定动态表头的 title,为和表体对应上做铺垫
注意:该行最终无需展示,需要隐藏掉

image.png
继续配置title,步骤几乎同上
image.png

配置真正展示的数据,刚刚在上一步已经配好了表体对应的 key,接下来就是绑定真正展示的数据源
需要注意这里的数据源是取的表体的数据,而非表头的数据
数据列 =m2 也就是刚刚新增的行,绑定上即可(根据自己的列名动态调整)
扩展方向为纵向(表体数据,向下扩展)

image.png

最后一部就是与动态列关系不大的合计,这里选择插入公式

image.png
依然是双击该内容,出现弹窗,可以看到帆软提供了很多内部的公式供使用,这里我们选择 SUM 求和公式对 M3 行进行求和即可
image.png

最后记得右键隐藏第二行 不给用户展示即可

呈现效果

通过使用帆软报表的表格动态列功能,可以实现根据数据的动态变化来动态生成列的报表。这样的报表具有灵活性和扩展性,能够适应不同数据情况下的列数和列名变化,最终效果如下:
image.png
image.png

结尾

以上就是帆软动态列的实现,需要你有一定的帆软基础,关于帆软基础的使用可以翻阅官方文档,在文章开始已经提到。
Bye~

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

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

相关文章

【赠书第10期】从概念到现实:ChatGPT和Midjourney的设计之旅

文章目录 前言 1 ChatGPT的崛起 2 Midjourney的探索 3 技术创新的交汇 4 对未来的影响 5 结论 6 推荐图书 7 粉丝福利 前言 在过去的几年里,自然语言处理和聊天模型的领域取得了飞速的发展。ChatGPT 作为一个由OpenAI 开发的大型语言模型,以其强…

C++解析xml示例

C解析xml示例 1. Xml文档介绍1.1 特点及作用1.2 Xml优点1.2.1 良好的可拓展性1.2.2 内容与形式分离 1.3 Xml组成1.3.1 Xml声明1.3.2 根元素1.3.3 元素1.3.4 属性1.3.5 实体1.3.6 注释 2 C解析Xml2.1 tinyXml2类库2.2 关键接口2.2.1 LoadFile2.2.2 RootElement2.2.3 FirstChildE…

重要通知丨JumpServer开源堡垒机V2社区版即将停止维护的通知

尊敬的JumpServer开源堡垒机用户:您好! 如《关于JumpServer开源堡垒机V2版本产品生命周期的相关说明》所示,JumpServer开源堡垒机V2版本(社区版)将于2023年12月31日停止维护支持。 在过去两年多的时间里,…

第十一章 Shell编程

第十一章 Shell编程 ​ Shell程序是通过文本编辑程序把一系列Linux命令放在一个文件中执行的实用程序。执行Shell程序时,文件中的Linux命令会被一条接一条地边解释边执行。因此,当用户需要通过多个Linux命令地执行才能完成最后地操作时,可以…

【Docker】Swarm的ingress网络

Docker Swarm Ingress网络是Docker集群中的一种网络模式,它允许在Swarm集群中运行的服务通过一个公共的入口点进行访问。Ingress网络将外部流量路由到Swarm集群中的适当服务,并提供负载均衡和服务发现功能。 在Docker Swarm中,Ingress网络使…

Spring简单的存储和读取

前言 前面讲了spring的创建,现在说说关于Bean和五大类注解 一、Bean是什么? 在 Java 语⾔中对象也叫做 Bean,所以后⾯咱们再遇到对象就以 Bean 著称。这篇文章还是以spring创建为主。 二、存储对象 2.1 俩种存储方式 需要在 spring-conf…

借助ETL快速查询金蝶云星空表单信息

随着数字化转型的加速,企业信息化程度越来越高,大量的数据产生并存储在云端,需要进行有效的数据管理和查询。金蝶云星空是金蝶云旗下的一款云ERP产品,为企业提供了完整的业务流程和数据管理功能,因此需要进行有效的数据…

使用 CSS Grid 的响应式网页设计:消除媒体查询过载

文章目录 前言介绍 CSS Grid让我们开始吧实现高级响应性1、Repeat() 2、Auto-fit3、Minmax()结论 前言 你是否厌倦了在实现响应式网站时需要管理多个媒体查询?说再见复杂的代码,拥抱更简单的解决方案吧:CSS Grid。 在这篇文章中,…

血的教训---入侵redis并免密登录redis所在服务器漏洞复现

血的教训—入侵redis并免密登录redis所在服务器漏洞复现 今天就跟着我一起来入侵redis并免密登录redis所在服务器吧,废话不多说,我们直接开始吧。 这是一个体系的学习步骤,当然如果基础扎实的话可以继续往下面看 以下都是关联的文章&#xff…

MobaXterm连接相关

其实最终解决的方法,还是,因为要远程连接的是个局域网ip,我所在的ip和要连接的这个不在同一个局域网内,需要实验室搭的VPN才行。 甚至,我连防火墙都没关,也可以连接 至于修改密码,passwd&#…

应用于智慧金融的AI边缘计算盒子+AI算法软硬一体化方案

传统金融营业厅存在运营管理模式落后、资源投放不平衡、从业人员培训效果不达预期、客户体验割裂等普遍现象; 部署英码数字金融解决方案,将助力企业从传统金融模式快速向数字金融模式转变,可针对每一个客户定制个性化“一对一”服务&#xff…

算法与数据结构有区别吗?

算法和数据结构并不是同一件事。严格来说,它们并不是等效的。但是,我们通常在使用的时候会互换这两个术语。为了简便,后文我们会用数据结构这个术语来指代“数据结构及其所有相关的方法”。 有很多方法可以用来说明这两个术语之间的区别&…

Linux信号超详细剖析

预备知识: 一、信号产生(OS发给进程) 1、键盘组合键 Linux中,一次登录对应一个终端,bash/shell。且只允许一个进程是前台进程,默认就是bash/shell,其它都是后台进程。获取键盘输入的是前台进程。 Ctrlc: 向前台进程…

Nginx配置文件全解析【深度剖析细节】

文章目录 💥 简介💫 基本结构🍉 事件处理器🥭 配置分析🍏 配置示例 🍉 HTTP服务器🥭 配置分析🍏 配置示例 🍉 虚拟主机 🍊 优化🍔 总结 &#x1f…

02-使用Git命令操作远程仓库,如克隆或添加远程仓库,拉取或推送内容

操作远程仓库 创建远程仓库 第一步: 访问GitHub官网,登录自己的账号创建一个远程仓库 第二步: 设置远程仓库的信息(一般远程库的名字和本地库的名字一样),仓库创建完成后可以看到仓库地址(每个仓库都会对应一个网络地址) 第三步: 查看本地仓库对应的Https/SSH连接 远程仓库命…

【负载均衡 SLB介绍及其算法详解】(一万两千字)

目录 一、负载均衡 SLB 定义 二、负载均衡SLB的作用 三、负载均衡器(Load Balancer) 【1】工作原理 【2】主要功能 【3】关键概念 四、工作负载(Workload) 五、负载均衡算法 【1】轮询(Round Robin&#xff0…

Oracle(2-8)Configuring the Database Archiving Mode

文章目录 一、基础知识1、Redo Log History2、NOARCHIVELOG Mode 非归档模式3、ARCHIVELOG Mode 归档模式4、Changing the Archiving Mode 更改归档模式![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d6a09f9a6de24de7bbcdad90b8d6b9ca.png)5、Auto and Manual Ar…

图扑参展高交会-全球清洁能源创新博览会

“相聚鹏城深圳,共享能源盛宴” 第二十五届中国国际高新技术成果交易会(简称“高交会”)于 11 月 15-18 日在深圳盛大开幕。高交会由商务部、科学技术部、工业和信息化部、国家发展改革委、农业农村部、国家知识产权局、中国科学院、中国工程院和深圳市人民政府共同…

从零开始Inline Hook

中断表进入0环 通过中断门进入0环&#xff0c;首先了解一下中断门的构成 构造一个中断号 Base:函数地址 DPL:3 //因为三环使用调用门的条件就是CPL(即cs段选择子的RPL)<DPL P:1 //P为1时&#xff0c;中断表才有效 Segment Selector: 0x0008 //中断成功后切换自己的CPL 在…

生产制造中4种导致产品成本、库存核算差错的问题!(化工/化妆品/生物制剂/混凝土等行业ODOO)

在化工/化妆品/生物制剂/混凝土等行业&#xff0c;因为其生产物料及产成品大都以液体&#xff08;或散颗粒&#xff09;形态为主&#xff0c;多以重量为计数方式&#xff1b;且液体&#xff08;或散颗粒&#xff09;相较于固体的较大区别就是产品计数上变数较大&#xff0c;固体…