如何使用 Javascript 解析 html 表格单元格的公式以像 Excel 一样工作

1 html javascript excel jquery html-table

我正在寻找一种使用Javascript(首选Jquery)使html表表现得像excel的方法。这是我的问题。我做了一个这样的表:

\n\n
 <table>\n       <tr>\n          <td id="A1">10</td>\n          <td id="B1">10.5</td>\n       </tr>\n       <tr>\n          <td id="A2">5</td>\n          <td id="B2" formula="A1+B1+A2"></td>\n       </tr>\n </table>\n
Run Code Online (Sandbox Code Playgroud)\n\n

每个td都有一个id,其中一些td添加了公式属性。我想计算这些公式\xef\xbc\x8c 将公式的值赋予td。

\n\n

在上表中,我想分配B225.5(B2=A1+B1+A2)

\n\n

看起来像这样:

\n\n
<td id="B2" formula="A1+B1+A2">25.5</td>\n
Run Code Online (Sandbox Code Playgroud)\n\n

有人可以给我线索吗?谢谢。

\n\n

PS:这是我找到的一些资源,但它们并不能解决我的问题

\n\n
    \n
  1. DOM 上类似于电子表格的公式

  2. \n
  3. http://zaach.github.com/jison/docs/

  4. \n
\n\n
\n\n

非常感谢@palindrom。根据您的回答,我终于解决了我的问题。

\n\n

这是我的代码:

\n\n
    $("td[formula]").each(function(){\n        //1 get formula attribute\n        var formula = $(this).attr(\'formula\');\n\n        //2 use regex to make expression, with the surpport of "A122"\xef\xbc\x8c "AB1" and more\n        var expression = formula.replace(/([A-Z]+[0-9]+)/g, "parseFloat(\\$(\'#$1\').html())") ;\n\n        //3 eval the expression\n        var result = eval( expression );\n\n        //4 set the value\n        $(this).html(result);\n     });\n
Run Code Online (Sandbox Code Playgroud)\n

pal*_*rom 5

应该适用于简单的数学,没有尝试:

$("td[formula]").each( function() {
  this.html( eval( this.attr("formula").replace(/[a-z][0-9]/g, "\$('#$0').html()") ) );
} );
Run Code Online (Sandbox Code Playgroud)

编辑: 如果公式中有 sum 之类的函数,请将它们实现为 javascript 函数,它们也应该可以工作。