如何通过前端表格控件实现自动化报表?1

背景

最近伙伴客户的项目经理遇见一个问题,他们在给甲方做自动化报表工具,项目已经基本做好了,但拿给最终甲方,业务人员不太买账,项目经理为此也是天天抓狂,没有想到合适的应对方案。

现阶段主要面临的问题是项目经理和甲方沟通好了需求,就布置了任务,让研发去调研。但由于现在市面上报表的形式大同小异,大部分都是用 Excel 来做,难点就在于要开发一个高度类似 Excel 并且还可以应用在 web 端项目上的报表。市面上存在一些软件级的应用,但是又只能用透视表这些做统计报表分析,和用户期望的聚合形式多少有差异。而且集成费用成本也比较大,导致项目组的人目前都没什么头绪。

解决方法

为了解决这个问题,伙伴客户的项目经理向小编求助,想问问在前端开发过程中,有没有用过一种能同时具备 Excel 使用习惯,也能和业务数据库集成,做出一些业务报表的前端插件。

在寻找解决方案的过程中,小编进行了市场调研,探索了不同的报表生成方式,以确定哪种方式最有可能满足用户的期望需求,这里也做下分享:

方式一:使用 Excel 工具

Excel 可以通过扩展机制,对接一些业务数据。用户可以基于这些业务数据,直接在本地 Excel 利用透视表等方式做出自己想要的报表形式,使用Excel直接做报表存拥有以下优点:

  • 熟悉的界面和操作方式,降低学习成本;
  • 灵活性高,可以根据需要自定义报表样式;
  • 可以在本地进行数据分析和报表生成,无需依赖其他软件或平台。

在目前的市面上,大多数公司都是使用此方法,这也是符合大多数人最好的操作习惯,但从项目的实际落地而言,还是会存在一些难以解决的问题:

  • 目前 Excel 仍然是一个独立的软件,很难和企业的系统进行融合,目前大多数公司都是将数据从系统中导出,然后再用 Excel 打开之后再进行分析并做报表,最后再把报表上传到系统中,同时作为一款独立于系统之外的软件,系统的数据在被导出到系统之外后也非常容易泄露;
  • 目前 Excel 存在多个版本,并且各个版本之间的兼容性也并没有做到一致,就会导致用不同的版本软件打开之后会出现不兼容的问题,同时随着国产办公软件 WPS 的崛起,不兼容的问题未来会更加严重。

总的而言,Excel 作为全球影响范围最广、使用效率最高的软件,目前仍然是中小企业的第一选择,但是随着市面上各大控件产品以及国产办公软件的崛起,越来越多的公司和企业也慢慢开始有了新的选择。

方式二:自研或借助其它报表引擎工具

该方法适合于技术能力较强且公司财力雄厚的企业,针对最终客户的需求,需要采用类似 Excel 报表的设计形式。若考虑自主开发,首要任务是研发一个适用于 Excel 的功能。对开发人员而言,这可能比仅了解 Excel 扩展 API 又要更加困难。尽管市面上存在一些开源的类 Excel 插件,但其功能相对较为简单,且不具备用户所需的报表制作能力。因此,这一途径的实现成本相当高昂。

另一种方法是借助其他报表引擎工具,这类工具通常具备完善的数据接入能力,通过表单布局形式,同样可以生成用户所需的 Excel 报表。若最终客户仅需查看类似 Excel 的报表形式,或者预算中包含相应的实施及维护费用,那么这些工具具有极高的应用价值。毕竟,对于任何公司而言,能够轻松创收而又耗费少量精力的事情,几乎没有谁会拒绝。然而,若客户需要根据业务需求自行制作报表,则学习新系统的成本仍然无法回避。

方式三:使用市面上高度类似 Excel 的前端表格控件工具

小编在进行市面上的调研时发现,除了直接用 Excel 和自研之外,其实还有一款非常成熟的前端类 Excel 表格控件 SpreadJS,该产品由西安葡萄城研发,整体上使用起来和Excel非常相似,同时口碑也相当不错。

SpreadJS 可以兼容 Excel 绝大部分基础能力,包含了透视表及公式函数,甚至包含了基于数据透视表和图表的相关统计分析。这就意味着,研发只需要负责开发数据接入接口,业务人员完全可以用以前线下使用 Excel 的方式制作自己想要的报表。

除此之外,SpreadJS 也具备了和主流报表引擎同等的报表制作能力,区别是在报表制作形式上,SpreadJS并没有选择市面上常用的表单配置型模式,而是选择了类 Excel 的报表设计形式,有效减少用户的学习成本。

上面的动图是 SpreadJS 报表模块的操作过程,研发做好数据接入后,业务人员只需要通过拖拉拽相应的字段到单元格位置即可。之后的单元格背景色、文字大小、行高列宽等一系列显示设置,都可以完全复用类Excel的使用习惯。目前在市面上,这种设计形式可以算是独一无二了。

SpreadJS 报表机制不同于其它报表的设计在于,用户可以直接在设计完成的报表上进行数据修改,报表不再只是一种查看态的形式。比如在做员工打分时,呈现给领导的报表,如果领导觉得某个员工的打分不合适,希望能直接对分数做调整,不再需要回到打分系统中,只要开发人员接入好数据回写接口,即可做到在报表查看态,高权限用户可直接进行数据修改或录入,等于说,一部分填报工作可以直接通过报表能力解决(如下图所示)。

最新技术资源(建议收藏)
https://www.grapecity.com.cn/resources/

总结

综合来看,以上三种解决方法各有利弊。对于对数据安全性要求较低、业务需求相对简单的公司,可以选择方法一;对于技术实力较强的公司和企业,可以考虑方法二;而对于技术能力相对较弱,但需要进行大量数据填报、分析以及保护数据安全,并对 Excel 有强烈依赖的公司,可以考虑方法三,以便更好地满足用户需求。

扩展链接:

【干货放送】财务报表勾稽分析要点,一文读尽!

为什么你的财务报表不出色?推荐你了解这四个设计要点和!

纯前端类 Excel 表格控件在报表勾稽分析领域的应用场景解析

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

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

相关文章

RabbitMQ 优先级队列详解

本文是博主在记录使用 RabbitMQ 在执行业务时遇到的问题和解决办法,因此查阅了相关资料并做了以下记载,记录了优先级队列的机制和使用要点。 本文为长文,详细介绍了相关的知识,可作为学习资料看。 文章目录 一、优先级队列介绍1、…

代理模式简述

目录 一、主要角色 二、类型划分 三、静态代理 示例 缺点 四、动态代理 JDK动态代理 示例 缺点 CGLib动态代理 导入依赖 示例 五、Spring AOP 代理模式是一种结构型设计模式,通过代理对象控制对目标对象的访问,可在不改变目标对象情况下增强…

每日一题——云服务计费问题

云服务计费问题(哈希表 排序)| 附详细 C源码解析 一、题目描述二、输入描述三、输出描述四、样例输入输出输入示例:输出示例:说明: 五、解题思路分析六、C实现源码详解(完整)七、复杂度分析 一…

【JVM】运行时数据区域

文章目录 1. 程序计数器补充 2. 虚拟机栈2.1 栈帧1. 局部变量表2. 操作数栈3. 动态链接4. 方法返回地址补充 3. 本地方法栈4. 堆5. 方法区静态常量池(Class常量池)运行时常量池字符串常量池(1)位置变化(2)放…

day28图像处理OpenCV

文章目录 一、图像预处理4 边缘填充4.1 边界复制(BORDER_REPLICATE)4.2 边界反射(BORDER_REFLECT)4.3 边界反射101(BORDER_REFLECT_101)4.4 边界常数(BORDER_CONSTANT)4.5 边界包裹&…

C++ Json-Rpc框架-3项目实现(2)

一.消息分发Dispatcher实现 Dispatcher 就是“消息分发中枢”:根据消息类型 MType,把消息派发给对应的处理函数(Handler)执行。 初版: #pragma once #include "net.hpp" #include "message.hpp"n…

C++算法优化实战:破解性能瓶颈,提升程序效率

C算法优化实战:破解性能瓶颈,提升程序效率 在现代软件开发中,算法优化是提升程序性能的关键手段之一。无论是在高频交易系统、实时游戏引擎,还是大数据处理平台,算法的高效性直接关系到整体系统的性能与响应速度。C作…

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口连接PHP

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。 感兴趣的可…

山东大学软件学院创新项目实训开发日志(12)之将对话记录保存到数据库中

在之前的功能开发中,已经成功将deepseekAPI接口接入到springbootvue项目中,所以下一步的操作是将对话和消息记录保存到数据库中 在之前的开发日志中提到数据库建表,所以在此刻需要用到两个表,conversation表和message表&#xff…

Spring-注解编程

注解基础概念 1.什么是注解编程 指的是在类或者方法上加入特定的注解(XXX) 完成特定功能的开发 Component public classXXX{} 2.为什么要讲注解编程 1.注解开发方便 代码简洁 开发速度大大提高 2.Spring开发潮流 Spring2.x引入注解 Spring3.x完善注解 Springboot普及 推广注解…

Dify智能体平台源码二次开发笔记(5) - 多租户的SAAS版实现(2)

目录 前言 用户的查询 controller层 添加路由 service层 用户的添加 controller层 添加路由 service层-添加用户 service层-添加用户和租户关系 验证结果 结果 前言 完成租户添加功能后,下一步需要实现租户下的用户管理。基础功能包括:查询租…

基于若依的ruoyi-vue-plus的nbmade-boot在线表单的设计(一)架构方面的设计

希望大家一起能参与我的新开源项目nbmade-boot: 宁波智能制造低代码实训平台 主要目标是类似设计jeecgboot那样的online表单功能,因为online本身没有开源这部分代码,而我设计这个是完全开源的,所以希望大家支持支持,开源不容易。 1、数据库方面设计考虑 是在原来gen_table和…

WebFlux应用中获取x-www-form-urlencoded数据的六种方法

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

[Python基础速成]1-Python规范与核心语法

本系列旨在快速掌握Python,实现能够快速阅读和理解 Python 代码,并在可查阅语法的情况下进行 AI 学习。 本篇先了解一下Python基础知识。 本篇内容较菜鸟教程有所删减、方便快速构建大纲,且加入了PEP 8规范说明等有助于理解和编写代码的说明。…

农民剧团的春天与改变之路

杨天义,男,1966年9月生,中共党员,江西省吉安市吉水县水南农民剧团团长。 杨天义从废品收购起家,凭借自身的努力和奋斗,自筹资金100余万元建设了水南镇的第一座影剧院,组建了江西省吉安市吉水县…

python asyncio 的基本使用

1、引言 asyncio 是 Python 标准库中的一个库,提供了对异步 I/O 、事件循环、协程和任务等异步编程模型的支持。 asyncio 文档 2、进程、线程、协程 线程 线程是操作系统调度的基本单位,同一个进程中的多个线程共享相同的内存空间。线程之间的切换由操…

Leedcode刷题 | Day30_贪心算法04

一、学习任务 452. 用最少数量的箭引爆气球代码随想录435. 无重叠区间763. 划分字母区间 二、具体题目 1.452用最少数量的箭引爆气球452. 用最少数量的箭引爆气球 - 力扣(LeetCode) 在二维空间中有许多球形的气球。对于每个气球,提供的输…

Ant Design Vue 表格复杂数据合并单元格

Ant Design Vue 表格复杂数据合并单元格 官方合并效果 官方示例 表头只支持列合并&#xff0c;使用 column 里的 colSpan 进行设置。 表格支持行/列合并&#xff0c;使用 render 里的单元格属性 colSpan 或者 rowSpan 设值为 0 时&#xff0c;设置的表格不会渲染。 <temp…

C++ 标准库中的 <algorithm> 头文件算法总结

C 常用 <algorithm> 算法概览 C 标准库中的 <algorithm> 头文件提供了大量有用的算法&#xff0c;主要用于操作容器&#xff08;如 vector, list, array 等&#xff09;。这些算法通常通过迭代器来操作容器元素。 1. 非修改序列操作 std::all_of, std::any_of, s…

程序化广告行业(84/89):4A广告代理公司与行业资质解读

程序化广告行业&#xff08;84/89&#xff09;&#xff1a;4A广告代理公司与行业资质解读 大家好&#xff01;在探索程序化广告行业的道路上&#xff0c;每一次知识的分享都是我们共同进步的阶梯。一直以来&#xff0c;我都希望能和大家携手前行&#xff0c;深入了解这个充满机…