找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9899

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15533

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-12 21:44  /   查看:3149  /  回复:0
        SpreadJS中支持了Excel超过400种以上的函数,但当常用的函数已经无法满足我们业务场景的应用时,就需要用到我们的自定义函数的功能了。自定义函数是SpreadJS非常灵活的进阶应用,当我们本博客主要讲解如何在自定义函数中操作其他单元格。这样的场景在日常函数应用中会经常遇到,比如我们可以定义一个函数作为控制开关去控制其他单元格的任何属性(值,样式,格式等)。        首先,我们还是使用通常的方法创建一个自定义函数,例如:

  1. function FactorialFunction() {
  2.     this.name = 'test';
  3.     this.maxArgs = 1;
  4.     this.minArgs = 1;
  5.     this.typeName = "FactorialFunction";
  6. }
复制代码
          接下来,我们需要重写该函数原型的isContextSensitive方法,让其return为true。
  1. FactorialFunction.prototype.isContextSensitive = function () {
  2.     return true;
  3. }
复制代码
上述的方法就是在自定义函数的计算方法中返回上下文对象,通过上下文我们可以操作sheet上面的任何单元格。
接下来我们就可以在evaluate中去获取sheet对象来对其他单元格进行赋值了
  1. FactorialFunction.prototype.evaluate = function () {
  2.         var context = arguments[0];
  3.         var sheet = context.source.getSheet();
  4.         sheet.setValue(1,1,"123456");
  5.         return "OK";
  6. }
复制代码
最后我们看一下效果:
image.png784857482.png
在A1单元格设置了函数,函数操作了B2单元格









customfunction_acceptsReference.html

1.66 KB, 下载次数: 43

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部