请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

kotoYY

金牌服务用户

113

主题

265

帖子

840

积分

金牌服务用户

积分
840

[已处理] 公式不计算

kotoYY
金牌服务用户   /  发表于:2017-10-20 11:38  /   查看:3890  /  回复:5
公式不计算,同样的公式,重新剪切粘贴进去就会计算。
image.png57916869.png

3D66AFBA231F4AF2BBAF20C8DE22BFCF.ssjson

1.78 MB, 下载次数: 114

test.js

3.79 KB, 下载次数: 88

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-20 15:07:11
沙发
我看您的json里并没有有关自定义公式的信息,按道理导出的json中是有下面字段的
"customFunctions":{"EFFECTIVENUM":{"name":"EFFECTIVENUM","maxArgs":2,"minArgs":2,"typeName":"FactorialFunction2"}},
       
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-20 15:31:27
板凳
您好,您在您的test.js中的
var effectivenumF = new FactorialFunction2();
下面加入
GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("EFFECTIVENUM", effectivenumF);
回复 使用道具 举报
kotoYY
金牌服务用户   /  发表于:2017-10-20 15:45:06
地板
本帖最后由 kotoYY 于 2017-10-20 15:47 编辑
ClarkPan 发表于 2017-10-20 15:31
您好,您在您的test.js中的
var effectivenumF = new FactorialFunction2();
下面加入

我调的这个spread.addCustomFunction(effectivenumF);
厉害了,这个比我的这个好用。应该是我调我这个时机不对。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-20 16:19:35
5#
这个需要在导入json之前进行注册,有可能是因为调用的时机不对,不管怎么样能够解决问题就行
GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction 这个方法会直接将您自定义的公式注册在计算引擎中。
而spread.addCustomFunction(effectivenumF);是将其注册在这个spread对象中。
两者唯一区别就是如果页面中存在多个spread的情况下,使用GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction方法注册,使得多个spread都可以调用您的自定义公式,而第二种只能在注册的那个spread对象中调用。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-10-23 15:04:20
6#
您好,应该您carryF的自定义方法没有自定义description
按照您之前提供的测试用例,我给您加入GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("EFFECTIVENUM", effectivenumF);
这样在运行时可以看到您自定义的description
如下图:
image.png965406799.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部