2017-09-15 172 views
1

我们正在构建一个处理数据透视表的excel插件。我们想要从数据源刷新数据透视表。我们希望在Data选项卡上实现Refresh All Connections按钮的相同功能。但是我们希望通过使用office.js的代码来完成。office.js刷新excel工作簿中的数据透视表不起作用

我们尝试了下面的代码片段。它不起作用。

Excel.run(function (ctx) { 
    var pivotTables = ctx.workbook.worksheets.getActiveWorksheet().pivotTables;//.load("items"); 
    pivotTables.refreshAll(); 
    return ctx.sync().then(function() { 
     //var table = pivotTables.items[0]; 
     //table.refresh(); 
     //pivotTables.refreshAll(); 
    }).then(ctx.sync); 
}); 

任何帮助,将不胜感激。

谢谢。

回答

1

你的代码没有错,但是你对refreshAll在这里所做的预期有些偏离。此方法将刷新数据透视表以反映对支持数据的任何更改。这与拉取数据本身的新快照不是一回事。

使用此方法的一个示例是,如果您的加载项对数据矩阵进行了多处更改,则一旦完成,您将执行refreshAll()以使您的数据更改反映在数据透视表中。

目前无法使用office.js触发数据连接的刷新。

+0

谢谢@ marc-lafleur-msft 我不清楚你的意思是支持数据。数据库不是数据透视表的后备存储吗?你提到了“数据矩阵”。它指的是什么? – amitavak

+0

您的数据透视表实际上已连接到工作簿中的数据(通常位于另一个工作表上)。这些数据可能是从数据库中提取的,但它仍然只是数据的快照。刷新数据透视表可将您的数据透视表与工作表同步。刷新数据从数据库中提取新快照。它刷新不支持通过JS的数据。 –

相关问题