找回密码
 立即注册

QQ登录

只需一步,快速开始

wyq123321qyw123

注册会员

12

主题

22

帖子

84

积分

注册会员

积分
84
wyq123321qyw123
注册会员   /  发表于:2018-7-31 17:13  /   查看:4638  /  回复:3
您好!
    关于利用spreadJs自定义异步函数时,为什么如果函数参数传的是字符串就不能函数了
例如  getHfmFunction(123,456);  --传的都是数据是可以调用函数执行的
         getHfmFunction(www,yyy); --不能调用函数
         getHfmFunction('www','yyy')  --不能调用函数
         getHfmFunction("www","yyy")                   -- 不能调用函数

如果我的参数要传字符串应该怎样自定义异步函数,
因为我要根据我传的字符串取后台获取数据,
而目前传字符串都不能调用自定义函数,
请求帮助怎样传字符串参数??

3 个回复

倒序浏览
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-7-31 17:44:41
沙发
不会啊,您提供一个demo,我看一下,正常自定义函数完全可以传字符串当作参数。
回复 使用道具 举报
wyq123321qyw123
注册会员   /  发表于:2018-8-2 11:58:05
板凳
如果参数是已单' 就不能获取到参数,现在用“是可以获取参数的
函数如下:
GET_HFM_DATA('4001509A','HYTD','EUR','1002010231','5070700a','EURO','L17','GX01','PRC','NNNN_NN')+SUM(B3,C3)
函数定义如下:
var GET_HFM_DATA = function () {
            };
            GET_HFM_DATA.prototype = new GC.Spread.CalcEngine.Functions.AsyncFunction("GET_HFM_DATA", 10, 10,
                {
                    name: "GET_HFM_DATA", description: "取数函数",
                    parameters: [
                        { name: "ENTITY", repeatable: false, optional: false },
                        { name: "VIEW", repeatable: false, optional: false },
                        { name: "VALUE", repeatable: false, optional: false },
                        { name: "ACCOUNT", repeatable: false, optional: false },
                        { name: "ICP", repeatable: false, optional: false },
                        { name: "CUSTOM1", repeatable: false, optional: false },
                        { name: "CUSTOM2", repeatable: false, optional: false },
                        { name: "CUSTOM3", repeatable: false, optional: false },
                        { name: "CUSTOM4", repeatable: false, optional: false },
                        { name: "DATA", repeatable: false, optional: false }
                    ]
                });
            GET_HFM_DATA.prototype.defaultValue = function () {
                return "Loading...";
            };
            GET_HFM_DATA.prototype.evaluate = function (context) {
                var args = arguments;
                var result = 0;
                that.formulaPickNum.entityLab = args[1]
                that.formulaPickNum.viewLab = args[2]
                that.formulaPickNum.valueLab = args[3]
                that.formulaPickNum.accountLab = args[4]
                that.formulaPickNum.icpLab = args[5]
                that.formulaPickNum.cus1Lab = args[6]
                that.formulaPickNum.cus2Lab = args[7]
                that.formulaPickNum.cus3Lab = args[8]
                that.formulaPickNum.cus4Lab = args[9]
                that.formulaPickNum.data = args[10]
                that.formulaPickNum.tableCode = that.reportByObj.tableCode;
                that.formulaPickNum.companyCode = that.reportByObj.companyCode;
                that.formulaPickNum.reportBody = that.reportByObj.reportCode;
                that.formulaPickNum.reportDate = that.reportByObj.period.Format("yyyy-MM");
                console.log(that.formulaPickNum);
                $.ajax({
                    
                });
            };
            var GET_HFM_DATA = new GET_HFM_DATA();
            GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("GET_HFM_DATA", GET_HFM_DATA);

回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2018-8-2 17:32:00
地板
眼拙,眼拙,没看到是单引号,因为单引号在Excel中有固定用法的,单引号+内容能够强制转换为文本方式。
所以公式引用中引用字符串就不能用单引号了,要用双引号,这里SpreadJS跟Excel是一致的。您可以用LEN这个函数来测试一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部