前后端结合解决Excel海量公式计算的性能问题

news2024/12/21 23:43:43

背景

在数据密集的业务领域,尤其是金融,保险,税务等行业中,经常需要利用Excel模型,来对业务进行分析和处理。例如:
1.金融投资:
根据模型进行估值计算,并对投资风险进行评估,通过测算出投资的内部收益率(IRR),净现值(NPV)来做投资收益分析,反应项目的获利能力。
2.保险精算:
运用数学,统计学,保险学的理论和方法,对保险经营中的计算问题作定量分析,以保证保险经营的稳定性和安全性。
3.税务审计:
在定制的审计底稿上填报基础数据,通过Excel的公式计算汇总,整理成审计人员需要的信息,生成审计报告,常见于税费汇算清缴,税务稽查工作等。
在上述业务场景下,数据处理过程中都需要依赖很多数学计算,部分场景还需要依赖专业的数学模型。如果手工运算,不仅工程量大而且极易出错。另外,以上业务场景中的数据表格的格式也极为灵活,经常需要增加和调整。基于上述特点,以上行业的从业者往往会依赖Excel,利用其函数计算、汇总分析、透视表等功能,完成上述业务中的复杂数学计算。

痛点

线下操作Excel软件,无法进行统一管理,特别是遇到模型升级,版本更新的情况。计算结果无法与其他系统,数据库,分析工具等进行交互,形成数据孤岛。
如果用软件系统来管控,在前端页面中操作Excel,可以解决版本控制,以及打通数据孤岛的相关问题,但会引入新的问题:限于浏览器运行环境的资源限制,模型中蕴含大量的复杂公式计算容易造成交互端的性能瓶颈。
解决方案:
基于前端运行环境性能瓶颈的存在,不能将大量公式计算放在前端进行。我们接下来采取前后端结合的全栈方案,服务端利用GcExcel高效的性能进行公式计算,前端采用SpreadJS,利用其与GcExcel的兼容性和前端类Excel的操作和展示效果,将后端计算后的结果进行展示。
1.读取模型之前,先用GcExcel在后端打开。在后端进行完整的计算。
2.前端根据所展示的Sheet工作表,从后端读取对应的工作表并序列化进行传输。

3.前端SpreadJS禁用公式计算,设置计算按钮改为触发式计算。
4.前端通过脏数据获取修改记录。
5.当主动点击计算或者切换工作表Sheet页签时触发请求,将修改记录发送后端,后端将修改内容修改并整体计算。再将结果根据前端所展示的Sheet做序列化处理并传输至前端。
6.前端进行反序列化处理展示。

两者结合,既利用了服务端的高性能避免了前端的性能瓶颈,又利用了前端的Excel操作进行分Sheet页的展示,以及前端的脏数获取修改操作并与后端交互。

源码获取

Demo地下载址:
https://gcdn.grapecity.com.cn/forum.php?mod=attachment&aid=MjQ1NjU1fDllYzAwYjVhfDE2NjkxNjY2MTZ8NjI2NzZ8OTk3MTg%3D

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

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

相关文章

降本增效这九个月,爱奇艺从“穿越火线”,到“冷静增长”

在互联网行业一致宣称降本、提质、增效的小周期里,爱奇艺已经把这个趋势彻底吃透,展现出成熟的一面。 11月22日美股盘前,爱奇艺发布了2022年第三季度业绩,连续三个季度运营盈利,而且当季净增会员数超千万,…

iwebsec靶场 数据库漏洞通关2-Redis数据库漏洞

iwebsec靶场的redis漏洞为未授权漏洞,如下所示。 一、Redis未授权漏洞原因 那么这个未授权漏洞的原理是什么呢?Redis 默认情况下,会绑定在 0.0.0.0:6379,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任…

PreScan快速入门到精通第三十九讲基于车道线识别传感器的车道保持辅助算法Demo讲解

车道保持辅助系统介绍: 什么是车道保持辅助系统? 疲劳和分心是无意中偏离车辆行驶车道线的最常见原因。车道保持辅助系统主动帮助驾驶者将其车辆保持在车道内,避免或者降低事故的发生。 车道保持辅助系统使用一个前置的摄像头,一般安装在车内后视镜附近,用来检测车辆前方…

项目风险管理十大黄金法则!高质量项目管理必杀技!

随着新冠疫情的发生,在这个VUCA时代越来越多企业开始重视风险管理。其实项目风险管理的好处是巨大的,如果您以积极的方式处理不确定的项目事件,则可能赚很多钱或提前拿到现金流。结果是您可以最大程度地减少项目威胁的影响并抓住发生的机会。…

野火FPGA强化(1):串口

文章目录第31讲:串口RS232串口数据接收模块:Uart_rx串口数据发送模块:Uart_tx底层模块:rs232第32讲:使用SignalTap II嵌入式逻辑分析仪在线调试第33讲:串口RS485key_filterwater_ledbreath_ledled_ctrluart…

Linux 内存之vmstat

文章目录前言一、vmstat简介1.1 processes1.2 memory1.3 block IO1.4 System1.5 cpu activity二、使用步骤2.1 vmstat -a2.2 vmstat -f2.3 vmstat -m2.4 vmstat -s2.5 vmstat -d/D三、vmstat 数据来源参考资料前言 NAMEvmstat - Report virtual memory statisticsvmstat 报告有…

Gang Scheduling Performance Benefits for Fine-Grain Synchronization

Gang Scheduling Performance Benefits for Fine-Grain Synchronization 题目 什么是 gang secheduling ? 组调度,要么一组全部执行,要么都不执行什么是 fine-grain 同步 ?细粒度同步 CSDN 博客 摘要 gang scheduling, where …

SSM框架的基本整合

整合SSM框架要做哪些事情: SpringMVC: pom web.xml a. 前端调度器servlet b. 编码过滤器filter c. 支持rest的过滤器springmvc.xml a. 扫描controller包 b. 添加 c. 视图解析器 d. 静态资源解析添加控制器类… Spring:web.xml a. 监听器(在启动web容器时…

Qt QHeaderView 添加复选框

有两种方法&#xff1a; 1. 重载paintSection 主要是重载paintSection和mousePressEvent这两个函数 headview.h #ifndef HEADERVIEW_H #define HEADERVIEW_H#include <QObject> #include <QHeaderView> #include <QPainter> #include <QCheckBox> …

后端进阶知识 Buffer pool 图文详解 之 free链表

Buffer pool 图文详解 之 free 链表 前言数据页缓存页描述信息初始化 Buffer poolfree 链表获取空闲页数据页是否缓存可关注专栏 》MySQL 进阶知识 收藏点赞加关注 前言 Buffer pool 是 InnerDB 存储引擎的一个重要组件&#xff0c;MySQL 的所有 CRUD 操作都是围绕 Buffer poo…

MariaDB 数据文件 迁移

1. 需求 原MariaDB采用默认安装&#xff0c;安装在/所在的分区下&#xff0c;现在该服务器的磁盘空间不补足了&#xff0c;现在扩展插入了一块新的磁盘&#xff0c;并且挂载到了/www/目录下&#xff0c;现在需要将原来的数据库数据迁移至该目录下。 2. 查询数据存储目录 首先…

预测足球世界杯比赛

目录 1. 下载数据集 2. 数据预处理 3. 模型训练与选择 4. 预测 1. 下载数据集 下载后数据如下&#xff1a; FIFA World Cup | Kaggle 2. 数据预处理 reprocess_dataset() 方法是数据进行预处理。预处理过的数据如下&#xff1a; save_dataset() 方法是对预处理过的数据&…

LibreOJ_10010

链接 点此跳转 思路 题目描述 有 nnn 个小朋友坐成一圈&#xff0c;每人有 aia_iai​ 颗糖果。 每人只能给左右两人传递糖果。每人每次传递一颗糖果的代价为 111 。 求使所有人获得均等糖果的最小代价。 分析 设 xix_ixi​ 表示第 iii 个朋友向第 i−1i-1i−1 个小朋友…

爬虫与云服务器云数据库

腾讯云轻量应用服务器TDSQL-MYSQL数据库PYTHON做爬虫 实现目标&#xff1a;轻量应用服务器上运行Python爬虫&#xff0c;把数据写到TDSQL-MYSQL数据库中。 最近双十一&#xff0c;趁着这一波福利&#xff0c;在腾讯云购买了一个轻量应用服务器和TDSQL-MYSQL版的数据库。买来之…

OpenGL学习

1.1&#xff0c;状态机-上下文-对象 GPU渲染流程 OpenGL自身是一个巨大的状态机(State Machine)&#xff1a;一系列的变量描述OpenGL此刻应当如何运行。 状态机&#xff1a;变量&#xff08;描述该如何操作&#xff09;的大集合 OpenGL的状态通常被称为OpenGL上下文(Contex…

异构图注意力网络Heterogeneous Graph Attention Network ( HAN )

文章目录前言一、基础知识1.异构图&#xff08;Heterogeneous Graph&#xff09;2.元路径3.异构图注意力网络二、异构图注意力网络1.结点级别注意力&#xff08;Node-level Attention&#xff09;2.语义级别注意力&#xff08;Semantic-level Attention&#xff09;总结前言 异…

微信商城小程序怎么开发_分享微信商城小程序的搭建

如何搭建好一个微信商城&#xff1f;这三个功能要会用&#xff01; 1.定期低价秒杀&#xff0c;提高商城流量 除了通过私域流量裂变&#xff0c;低价秒杀是为商城引流提高打开率的良好手段。 以不同节日作为嘘头&#xff0c;在情人节、38妇女节、中秋国庆、七夕节等日子&…

前端框架 Nuxtjs Vue3 SEO解决方案 SSR

目录 一、Nuxtjs安装 二、路由规则 三、公共布局 四、Vue3中TypeScript的使用 一、Nuxtjs安装 参考&#xff1a;Installation Get Started with Nuxt安装 - NuxtJS | Nuxt.js 中文网Installation Get Started with Nuxt yarn create nuxt-app <项目名> 项目运行…

GAMES101 作业0 环境配置 PC下简单配置i

前言 GAMES101提供了计算机图形学相关教学知识&#xff0c;闫教授及其团队也为大家准备了相应课程作业。课程作业部署在虚拟机上&#xff0c;以便免去环境部署的麻烦。但对于一些同学来说&#xff0c;还是希望直接在WIN的VS上使用并编码&#xff0c;本文对此进行简单说明。 环…

神经网络和深度学习-后向传播back propagation

后向传播back propagation 首先我们要了解&#xff0c;前向传播&#xff0c;损失函数这些前置知识&#xff0c;下面我们给出一张神经网络的图 反向传播通过导数链式法则计算损失函数对各参数的梯度&#xff0c;并根据梯度进行参数的更新 下面举个简单的例子 我们需要知道x,y,…