2017-04-26 18 views
0

我试图通过Excel加载项删除表中的某些行。我使用的代码如下:Excel加载项行索引和值返回为undefined

  var table = ctx.workbook.tables.getItem('TableName'); 

      if (Office.context.requirements.isSetSupported('ExcelApi', 1.2) === true) { 
       table.clearFilters(); 
      } 

      var tableRows = table.rows.load('items'); 

      ctx.sync().then(function() { 
       for (var i = (tableRows.count - 1); i >= 0; i -= 1) { 
        var row = tableRows.getItemAt(tableRows.items[i].index); 
        row.delete(); 
       } 
      }); 

在Excel的在线包括Internet Explorer 11,正常工作同时它与1601版本的作品(编译6741.2088)及更高版本。但是,它不适用于版本1509(内部版本4266.1001)。在此版本中,我将行项目的值和索引取为未定义的。我该如何解决这个问题?

回答

1

我不确定构建编号会有什么不同 - 但我会说TableRow API是一个非常脆弱的API(我们正在研究如何解决它)。实际上,当您执行getItemAt时,您将根据时间点索引创建参考,并且在添加或删除新行时不调整此索引。

换句话说,对于删除/插入,我会像对待它一样使表格行集合无效,和/或使用Range对象代替。再一次请注意,该语句仅适用于TableRow/TableRowCollection对象 - 其他集合(如工作表集合)可以正确调整。