找回密码
 立即注册

QQ登录

只需一步,快速开始

李昊翰

注册会员

13

主题

33

帖子

118

积分

注册会员

积分
118

微信认证勋章

李昊翰
注册会员   /  发表于:2020-11-18 09:37  /   查看:3396  /  回复:8
1金币
我想 去调用后台的接口 去插入到指定行,   但是用这个模板去插入的时候会卡死,  是因为公式太多吗?  有解决办法吗

2020-8 缝制效率报表-增加小线组别.rar

1.94 MB, 下载次数: 121

最佳答案

查看完整内容

您好,优化批量的公式计算操作,可以用suspendCalcService和resumeCalcService实现。参考附件Demo:SpreadJS Demo:演示示例.html 但您提供的这个文档,由于计算量过大,推荐采用前后端结合的方案,把公式计算放到后端gcexcel中执行,前端只负责展示。 我提供一个解决方案的示例,请参考附件【GCExcelAndSpreadJS4.zip】

8 个回复

倒序浏览
最佳答案
最佳答案
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-18 09:37:15
来自 2#
您好,优化批量的公式计算操作,可以用suspendCalcService和resumeCalcService实现。参考附件Demo:SpreadJS Demo:演示示例.html
但您提供的这个文档,由于计算量过大,推荐采用前后端结合的方案,把公式计算放到后端gcexcel中执行,前端只负责展示。

我提供一个解决方案的示例,请参考附件【GCExcelAndSpreadJS4.zip】

GCExcelAndSpreadJS4.zip

10.29 MB, 下载次数: 111

SpreadJS Demo:演示示例.html

5.43 KB, 下载次数: 91

回复 使用道具 举报
李昊翰
注册会员   /  发表于:2020-11-18 10:23:23
3#
嗯 , 我这边的业务逻辑就是  前台调用数据接口  然后插入到指定的地方去,  现在因为模板公式太多,  插入的时候会出现卡死的情况,   您的建议是 "把数据插入到指定行" 这个操作放到后端去完成,  前端只是做一个展示  我理解的对吗
回复 使用道具 举报
李昊翰
注册会员   /  发表于:2020-11-18 11:31:52
7#
KevinChen 发表于 2020-11-18 10:08
您好,优化批量的公式计算操作,可以用suspendCalcService和resumeCalcService实现。参考附件Demo:SpreadJ ...

现在最大的问题就是, 前台导入这个模板后,去插入数据的时候会卡死。
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-18 11:47:36
8#
前后端分离的思路,逻辑上分为以下几点:
1、前端导入时,不导入公式,这样来确保前端在操作时不会出现卡死的状态
2、后端用gcExcel同步导入相同的Excel文档,带公式
3、当前端用户执行修改数据、或新增行操作时,将用户的操作打包成命令发回gcExcel执行,后台再把执行结果(这里指的是公式计算的结果)返回前端,前端只同步计算的结果即可。

这样就实现了前后端结合来优化大文档公式计算的性能问题。
具体实现细节,可以参考附件的示例。
回复 使用道具 举报
李昊翰
注册会员   /  发表于:2020-11-18 12:44:34
9#
KevinChen 发表于 2020-11-18 11:47
前后端分离的思路,逻辑上分为以下几点:
1、前端导入时,不导入公式,这样来确保前端在操作时不会出现卡 ...

有没有办法, 我导入模板时不加公式, 导出的时候带公式呢
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-11-18 17:12:29
10#
可以带公式导入,然后控制公式不计算,这样所做的所有操作都不会得到实时的计算结果。最后导出时把公式导出即可。
具体方法:
1、导入后不执行公式计算,fromJSON方法传入参数,示例代码:
  1. spread.fromJSON({ doNotRecalculateAfterLoad : true})
复制代码


2、导入后马上挂起计算,保留公式的同时,可以不触发计算行为:
  1. spread.suspendCalcService(false);
复制代码

API: https://demo.grapecity.com.cn/sp ... spendcalcservice%2C
只要不调用resumeCalcService,就不会触发公式计算,这样就不会有性能问题了,
导出Excel可以保留公式,用户打开Excel后会触发计算,这样也可以得到计算结果。
回复 使用道具 举报
李昊翰
注册会员   /  发表于:2020-11-18 17:43:13
11#
KevinChen 发表于 2020-11-18 17:12
可以带公式导入,然后控制公式不计算,这样所做的所有操作都不会得到实时的计算结果。最后导出时把公式导出 ...

初始化的时候是可以关闭计算的, 导入模板后这个方法就失效了!还是会触发计算,
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-18 18:38:41
12#
您好,此问题已在下方链接贴回复
https://gcdn.grapecity.com.cn/fo ... &extra=page%3D1
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部