您好,
EVALUATE函数为宏函数,SpreadJS目前不支持宏函数。
您可以考虑自定义函数,将公式字符串作为参数传入,
然后使用evaluateFormula方法进行计算,获取计算结果,将计算结果返回。
主要代码如下:- //初始化
- var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'),{sheetCount: 1});
- var sheet = spread.getActiveSheet();
- // 添加自定义名称
- spread.addCustomName("test", "=Sheet1!$A$1:$B$3", 0, 0, "");
- /*------自定义函数------*/
- //1. 从 GC.Spread.CalcEngine.Functions.Function 派生并重写一些关键方法
- function FactorialFunction() {
- this.name = 'EVALUATE';//函数名
- this.maxArgs = 1;//最大参数个数
- this.minArgs = 1;//最小参数个数
- };
- FactorialFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
- FactorialFunction.prototype.acceptsReference = function() {
- return true;//函数的参数接受引用单元格区域
- }
- FactorialFunction.prototype.isContextSensitive = function() {
- return true;//为true 时,函数的计算依赖于上下文
- }
- FactorialFunction.prototype.evaluate = function (arg) {
- var formulaString = arg.Lf.arguments[0].value;
- //使用EvaluateFormula()方法来计算公式,而无需在表单的单元格中设置公式
- var value = GC.Spread.Sheets.CalcEngine.evaluateFormula(sheet, formulaString, 0, 0);
- return value;
- }
- var factorial = new FactorialFunction();
- sheet.setValue(0,0,1);
- sheet.setValue(1,0,2);
- document.getElementById('addCustomFunction').addEventListener('click', function() {
- sheet.addCustomFunction(factorial);//将自定义函数添加到 表单里。如果不设置,会报错 #NAME
- sheet.setFormula(3,0,'=EVALUATE("SUM(A1:A2)")');
- })
复制代码 具体请参考附件的demo。
|
|