Clark.Pan 发表于 2021-8-27 19:13:18

[双剑合璧] SpreadJ+GcExcel 应对大量公式计算场景的解决方案(上)

本帖最后由 Lynn.Dou 于 2022-1-12 15:53 编辑

Excel是我们日常必备的办公软件,用于处理日常各种表格事务。但很少有人知道,这个名字其实源自英语中的“Excellence”一词,代表着:卓越和优秀。而最能体现“卓越和优秀“的地方,就是Excel的公式计算功能,公式计算使得本身静态的表格变得“活”了起来。

基于Excel强大的公式计算能力,使得Excel已经在很多职场领域成为了精英们高效工作必备的神器。鲁迅曾经说过:“excel多学一公式,晚上多睡一小时。”


SpreadJS众所周知是一款能够在线运行的类Excel控件,它将Excel的功能搬到了线上的网页中,作为万能的程序猿,我们可以利用它将Excel的功能移植到我们的业务系统中,为我们的业务系统赋予Excel的能力。这就好比是关羽配上了赤兔马,如虎添翼。



static/image/hrline/5.gifhttps://gcdn.grapecity.com.cn/static/image/hrline/5.gif(画风一转)

但是SpreadJS基于纯前端的设计使得在使用的过程中可能会遭遇到前端的性能瓶颈。前端资源是有限的,如果我们去加载一个包含大量公式计算的Excel,举个例子诸如地产行业的投资模型,金融保险行业的金融精算表格,财税行业的底稿等等。这些Excel中,公式个数一般在10W~20W这样的数量级上,并且其中还会包含大量复杂逻辑,嵌套的公式计算。这种情况下浏览器本身就会有所限制,已经不是SpreadJS力所能及的事情了。在用户体验上,就会表现为页面运行缓慢,甚至崩溃的情况。

当然,我们也不必惊慌失措,利用另一款组件GcExcel在服务端和性能的优势,与SpreadJS双剑合璧,可以有效的对上述场景进行优化。
下面就给大家来讲解专门应对此类问题的解决方案。



首先,我们先讲解思路:
1、利用GcExcel的服务端的特性和性能优势。在服务端对整个Excel进行加载和总体计算。
2、前端SpreadJS,只用负责页面结果的展示和与用户的操作交互。

架构图如下所示:


根据这样的设计GcExcel可以有效分担原本SpreadJS的部分任务(这部分任务本身会大量的消耗前端性能),减轻前端压力。结构上避免了头重脚轻,更加匀称。

本期的介绍到这里先告一段落,下一期我们将从该方案的代码详细的讲解。
欲(zi)知(shu)详(tai)情(chang),且(yi)听(qi)下(jiang)回(bu)分(wan)解(le)。










Clark.Pan 发表于 2021-9-30 17:29:18

第二期链接附上
https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=98897&extra=page%3D2
页: [1]
查看完整版本: [双剑合璧] SpreadJ+GcExcel 应对大量公式计算场景的解决方案(上)