Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

自定义公式通过luckyexcel导入后不生效 #20

Open
kdevilpf opened this issue Dec 7, 2020 · 1 comment
Open

自定义公式通过luckyexcel导入后不生效 #20

kdevilpf opened this issue Dec 7, 2020 · 1 comment

Comments

@kdevilpf
Copy link

kdevilpf commented Dec 7, 2020

自定义公式EVALUATE添加入Luckysheet\src\function\functionImplementation.js与Luckysheet\src\locale\zh.js(en.js、es.js)
npm run build打包后,把dist目录下的打包文件覆盖Luckyexcel\assets\luckysheet下的所有文件,重新打包Luckexcel后导入包含自定义公式EVALUATE的xlsx文件,函数并不生效。

@Cow&sheep测试后确认是在导入过程中出现的问题。
QQ图片20201207110219
Luckyexcel\src\ToLuckySheet\LuckySheet.ts 151行this.calcChain.push(chain);为空.

@kdevilpf
Copy link
Author

kdevilpf commented Dec 7, 2020

1、函数实现代码如下:
"EVALUATE": function() {
//必要参数个数错误检测
if (arguments.length < this.m[0] || arguments.length > this.m[1]) {
return formula.error.na;
}

    //参数类型错误检测
    for (var i = 0; i < arguments.length; i++) {
        var p = formula.errorParamCheck(this.p, arguments[i], i);

        if (!p[0]) {
            return formula.error.v;
        }
    }

    try {
        //公式文本
        var strtext = func_methods.getFirstValue(arguments[0]).toString();
        if(valueIsError(strtext)){
            return strtext;
        }

        //if (!window.luckysheet_function.ISIDCARD.f(UUserCard)) {
        //    return formula.error.v;
        //}
        //匹配简单公式,只能包含  空格 数字-+*/.()
        var formulastr = /[ \d\+\*\-\/\(\)\.]+/;
        var strtext2=strtext.match(formulastr)[0];
        return eval(strtext2);
    }
    catch (e) {
        var err = e;
        //计算错误检测
        err = formula.errorInfo(err);
        return [formula.error.v, err];
    }
},

2、中文语言包zh.js代码如下
// EVALUATE
{
"n": "EVALUATE",
"t": "3",
"d": "对以文字表示的一个公式或者表达式求值,并返回结果",
"a": "根据文字公式或者表达式求值。",
"m": [1, 1],
"p": [{
"name": "公式",
"example": '"56"',
"detail": "公式或表达式仅支持数字+-/
.()",
"require": "m",
"repeat": "n",
"type": "rangeall"
}]
},

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant