Handsontable 保存公式值

Posted

技术标签:

【中文标题】Handsontable 保存公式值【英文标题】:Handsontable Save formula values 【发布时间】:2015-11-11 11:41:33 【问题描述】:

我想将 handsontable 集成到我的网站,但是遇到了一个问题,当我尝试保存由 RuleJS(公式支持)创建的数据时,脚本会给我一个公式,例如 (=$A1*$B1)。我试图得到简单的数学乘以价格和货币的结果。如何保存表值,而不是从源中保存?

工作代码在 jsfiddle 上: http://jsfiddle.net/zetwin/qhjuuk5j/4/

document.addEventListener("DOMContentLoaded", function() 

  var people = [ 
                base_price :'99', price:'13', unit:'=A1*B1',
                base_price :'89.99', price:'13.43', unit:'=A2*B2'
                ],
example1 = document.getElementById('example1'),
settings1;

  settings1 = 
    data: people,
    formulas: true,
    rowHeaders: true,
    colHeaders: true,
    colHeaders: [
    'Price', 'Currency', 'USD'],
    columns: [
      data: 'base_price',
      data: 'price',
      data: 'unit'
    ]
  ;

  var hot = new Handsontable(example1, settings1);

$('.push').click(function () 
    data = hot.getData();
    console.log(data);
    //$('.result').text(data);
);

);

谢谢!

【问题讨论】:

【参考方案1】:

对象是一个属性 Handsontable plugin.matrix.data - 一个单元格列表,根据表格中的公式计算得出。每个单元格都有一个属性值 - 这是显示的结果。要获取所有数据必须使用函数:Handsontable.plugin.helper.cellValue 或 Handsontable.plugin.helper.cellRangeValue。

例如对于您的 jsfiddle:

从单元格的右上角获取:

data = hot.plugin.helper.cellValue ('C1');
console.log (data);

48168.89000000001 获取所有单元格的值(一个列表):

data = hot.plugin.helper.cellRangeValue ('A1', 'C2');
console.log (data);

数组 [6]: 0: 625.57 1: 656.95 2: 77 3: 77 4: 48168.89000000001 5: 50585.15 长度:6

我认为这是一个比 cellRangeValue 更好的方法。但是在此基础上我们可以写一些更舒服的东西。看。 Handsontable.plugin.helper.cellRangeValue

【讨论】:

以上是关于Handsontable 保存公式值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Handson 表格单元格中添加垫子图标或电子表格图标?

请问,jQuery Handsontable控件如何像excel一样,设置公式,让某个单元格的值自动算出来?

自定义渲染器功能在 Handsontable 插件中不起作用

Handsontable 更新公式变量

Handsontable 公式#VALUE!错误,即使单元格的公式是正确的

Handsontable 和热公式解析器