2017-09-15 10 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

ピボットテーブルは、実際にはワークブック内のデータ(通常は別のワークシート)に接続されています。このデータはDBから取得されている可能性がありますが、まだデータのスナップショットです。ピボットテーブルをリフレッシュすると、ピボットとワークシートが同期されます。データを更新すると、DBから新しいスナップショットが取得されます。 JSでサポートされていないデータが更新されています。 –

関連する問題