Excel Online加载项 - 使用函数添加行作为第一列的值会创建总行

时间:2017-04-24 19:00:29

标签: javascript excel office365 office-js

Excel Online JS Api有一个奇怪的问题。我正在创建一个新工作表并添加一个包含API调用数据的表。有一个特定的情况,表的第一列有一个超链接函数('=HYPERLINK("somelink", "Go to Wherever")'),在它被添加到table.rows之后,其中一行被创建为总行。

它总是选择同一行作为同一组数据的总行,但会在数据集之间选择不同的行。因此,它并不总是使用相同的索引。

以下是我如何添加行的摘录。它很直接:

.then(function(){

    var dataTable = ctx.workbook.tables.add(topLeftCell.address + ':' + topRightCell.address.split('!')[1], true);

    var headers = data[0];
    var headerRange = dataTable.getHeaderRowRange();
    headerRange.values = [headers];

    for (i = 1; i < data.length; i++) {
        if (!data[i] || data[i].length !== data[i - 1].length) {
             break;
        }
        dataTable.rows.add(-1, [data[i]]);
    }

    dataTable.getRange().format.autofitColumns();
    return util.ctxSync(ctx); 
})
.then(function(){
     worksheet.activate();
     return util.ctxSync(ctx);
 })

工作表和表格创建得很好,但是将任何公式作为行中的第一个值将导致将一行创建为表格的总行而不是正常行。它可以通过dataTable.getTotalRowRange()获得,但不在dataTable.rows中。这很奇怪。

我认为这是一个Excel错误,我可以通过添加一个虚拟列来修复它,该列的任何值都不是公式作为第一列,然后在autofitColumns()之前删除它。

有人会对更好的解决方案有任何想法吗?任何见解都表示赞赏。

0 个答案:

没有答案