jquery.sheet触发公式计算单元格

时间:2014-11-04 21:29:29

标签: javascript jquery

所以我从服务器加载csv文件,插入js函数调用,用jquery.sheet创建表/表。到目前为止,一切都有效,但是当我将函数放入列表时,它们无法计算。

在修改任何内容之前,td的工作表(简化)数据对象具有此内容:

Object {td: x.fn.x.init[1], dependencies: Array[0], formula: "", cellType: null, value: "=A2+B2+C2"…}

当我设置公式值时,它将更改为:

Object {td: x.fn.x.init[1], dependencies: Array[0], formula: "=A2+B2+C2", cellType: null, value: "=A2+B2+C2"…}

所以我理解如何设置公式和值,但我想做的是触发一个事件来自动计算一个单元格,希望基于一个" X,Y"协调,或发现我采取了错误的方法。 我不知道这是否有帮助但是当我去编辑一个单元格时它会显示为== A2 + B2 + C2不是= A2 + B2 + C2

我会提供我的代码,但由于C#asp和js的交互,它并不短暂,我认为它不会有帮助。

1 个答案:

答案 0 :(得分:0)

解决:

将公式从csv文件加载到jquery.sheet实例然后计算,有两件事是必不可少的。首先是手动设置对象[“formula”]属性,而在开头省略'=',因为它添加了自己的属性。然后你必须触发“calc(s,true)”函数,其中s作为工作表索引,在我的情况下,我将true作为第二个参数,因为我相信它强制计算具有函数的单元格。

        var sheets = jQuery.sheet.instance[0];
        for (var s = 0 ; s < names.length; s++) {
            var sheet = sheets.spreadsheets[s];
            for (var k = 1; k < sheet.length; k++) {
                var row = sheet[k];
                for (var j = 1; j < row.length; j++) {
                    var col = row[j];
                    //alert(cell.value);
                    if (col.value.startsWith("=")) {
                        col["formula"] = col.value.substring(1, col.value.length);
                    }
                }
            }
            sheets.calc(s, true);
        }

如果找到更好的方法,请告诉我。我不认为这是可扩展的,因为它是O(n ^ 3)。