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

QQ登录

只需一步,快速开始

carl_chen 悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-4-18 22:39  /   查看:1927  /  回复:9
有些计算,需要组合很多的Excel函数来实现,嵌套太多很不好维护。有没有办法用js自定义函数(可以在公式中直接引用的函数)。
比如我自定义一个叫 geshui的函数 用来计算个税。 只要在单元格中输入 =geshui(7500) 就可以了。

9 个回复

倒序浏览
谢厅讲师达人认证 悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-4-19 08:50:53
沙发
都应用到js了,加一行代码把值赋给单元格就行了
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2019-4-19 09:05:12
板凳
楼上正解啊,您可以使用setValue函数把值付给对应单元格即可。
您可以看下这里:http://help.grapecity.com.cn/pag ... ion?pageId=11308544
回复 使用道具 举报
carl_chen悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-4-19 10:37:15
地板
谢厅 发表于 2019-4-19 08:50
都应用到js了,加一行代码把值赋给单元格就行了

js 代码并不能自动运行,不能随着单元格值改变而重新计算。 它必须要点击按钮才能运行,这是一个问题。
另外一个问题是,如果只是少数页面用到这个计算方法,勉强可以这样处理,但是有很多地方都要用到这个函数,就很不好弄了
回复 使用道具 举报
carl_chen悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-4-19 10:38:14
5#
本帖最后由 carl_chen 于 2019-4-19 10:42 编辑
Tracy.Liu 发表于 2019-4-19 09:05
楼上正解啊,您可以使用setValue函数把值付给对应单元格即可。
您可以看下这里:http://help.grapecity.co ...

还是想知道能不能 自定义函数?  就像 SpreadJS一样(我在论坛里面搜索到的),可以自定义函数。
回复 使用道具 举报
谢厅讲师达人认证 悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-4-19 10:45:20
6#
carl_chen 发表于 2019-4-19 10:37
js 代码并不能自动运行,不能随着单元格值改变而重新计算。 它必须要点击按钮才能运行,这是一个问题。
...

你可以把js定义好的函数单独存成一个js文件,在全局js的地方上传好。
你可以在页面加载时执行命令的时候使用js去调用全局js的方法。
回复 使用道具 举报
carl_chen悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-4-19 12:11:28
7#
本帖最后由 carl_chen 于 2019-4-19 12:12 编辑

我记得以前似乎看到过自定义函数的,就是想不起来在哪里了? 还是在论坛找到了,如下:
建议提供公式中调用自定义函数的功能
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2019-4-19 14:23:03
8#
你看看这个示例工程中的例子


这个订单就是有公式自动算的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
carl_chen悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2019-4-19 15:52:50
9#
本帖最后由 carl_chen 于 2019-4-19 16:00 编辑

总结一下,自定义函数的格式如下:
function GeShuiFunction() { // GESHUIFunction 这个名字根据自定义的函数名加后缀Funciton
    this.name = 'GESHUI';//这个就是你的自定义函数名
    this.maxArgs = 2;// 自定义函数最多可以有几个参数
    this.minArgs = 1;//最少是几个参数
}
GeShuiFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
GeShuiFunction.prototype.evaluate = function (earning) { //这是正真进行计算的函数体。这里为了突出重点,简化了计算步骤,真正的个税计算要复杂一些。
    return earning * 0.25;
}

GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("GESHUI", new GeShuiFunction());
把上面的代码,放在如下的全局 js文件中。就可在任何页面中使用 GESHUI函数了。 见 demo

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2019-4-22 09:50:36
10#
大佬厉害啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部