找回密码
 立即注册

QQ登录

只需一步,快速开始

清水

金牌服务用户

11

主题

42

帖子

147

积分

金牌服务用户

积分
147

[已处理] 定义自定义公式

清水
金牌服务用户   /  发表于:2022-8-11 17:10  /   查看:5518  /  回复:20
1金币
image.png615788879.png image.png410404967.png 我想用指定的名字作为一个公式,例如公式="当前_月",
就去获取当前系统的年。我现在这样写,然后不行。
因为我后面还有需求就是公式名称是不固定的(根据条件自动组成),然后异步去后台解析公式再返回对应的数据

想请问该如何实现,还有上面这个简单自定义公式为什么不行

最佳答案

查看完整内容

那要完全实现这种,你得将所有能够考虑的组合做到自定义名称中才行,再不然就完全脱离SpreadJS的公式机制,完全自己搞。

20 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-11 17:10:37
来自 19#
那要完全实现这种,你得将所有能够考虑的组合做到自定义名称中才行,再不然就完全脱离SpreadJS的公式机制,完全自己搞。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-11 18:10:52
2#
您好,
这边根据您的代码先本地测试下,有结果贴中回复您。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-12 14:23:21
3#
这边测试,GC.Spread.CalcEngine.Functions没有string这个方法,请问您是如何设置的呢?
image.png393334960.png
如果您自己进行了重写,请提供一个可直接复现此问题的demo,这边在您的demo基础上调研下原因。
回复 使用道具 举报
清水
金牌服务用户   /  发表于:2022-8-12 14:33:13
4#
Lynn.Dou 发表于 2022-8-12 14:23
这边测试,GC.Spread.CalcEngine.Functions没有string这个方法,请问您是如何设置的呢?

如果您自己进行 ...

string应该是写错了,我去掉后也没效果,我是想用一串字符串作为一个公式,不知道可不可以
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-8-12 17:53:33
5#
经目前测试调研,在evaluate方法内未找到可以获取函数名的方法,所以无法对设置的函数进行直接名称判断。建议您遍历设置多个返回结果的自定义公式。
如果您有更好的方案,欢迎分享下。
附件为'当前_年'自定义公式示例demo,您可以参考下。

自定义函数_中文name.html

3.18 KB, 下载次数: 284

回复 使用道具 举报
清水
金牌服务用户   /  发表于:2022-8-15 08:42:48
6#
Lynn.Dou 发表于 2022-8-12 17:53
经目前测试调研,在evaluate方法内未找到可以获取函数名的方法,所以无法对设置的函数进行直接名称判断。建 ...

你好,那请问有没有监听每个单元格公式计算前的方法,就是我在公式计算前将 我需要处理的字符串转为对应的值,就是把"当前_年"转为2022,然后再继续执行是spreadjs计算
回复 使用道具 举报
沉沉悬赏达人认证
金牌服务用户   /  发表于:2022-8-15 12:07:19
7#
请再详细描述下您的需求,输入公式‘=当前_年()’返回当前年, 上面给的demo已经满足您的要求,您说需要在执行spreadjs计算是什么意思呢?需要在处理2022吗?那在evaluate方法里面继续执行处理2022的计算即可。还是说要继续执行公式?
回复 使用道具 举报
清水
金牌服务用户   /  发表于:2022-8-15 13:52:56
8#
沉沉 发表于 2022-8-15 12:07
请再详细描述下您的需求,输入公式‘=当前_年()’返回当前年, 上面给的demo已经满足您的要求,您说需要 ...

我的需求是"当前_年" 返回当前年,上面的给的demo是"当前_年()"才返回当前年。例如公式输入="当前_年+1" 计算出来的值应该是2023,如果自定义函数实现不了的话,我想就是能否在每次公式计算前获取到整个公式内容,再手动处理"当前_年"这种特定字符串,转为"2022+1",再继续执行spreadjs的公式计算
回复 使用道具 举报
沉沉悬赏达人认证
金牌服务用户   /  发表于:2022-8-15 14:41:37
9#
换个思路,设置自定义公式=getData('年',1)第一个参数可以是年、月、日 ,第二个参数可传可不传。这样子在函数的execute方法中,可以获取参数,接下来对参数进行处理。这样子的思路是否可以实现你的需求
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部