2016-08-29 12 views
3

EPPlusを使用してC#で既存のスプレッドシートを編集しています。私は、最初のワークシートのPivotテーブルのデータソースとして使用されている2番目のワークシートの生データを変更しています。私の編集内容はすべて正常に動作していますが、スプレッドシートの出力を読み込むときに、ExcelツールバーのRefresh Dataボタンをクリックしてピボットテーブルを手動で更新する必要があるという問題があります。Refresh PivotTable EPPlus

C#EPPlusでこれを行うにはどうしてですか?

私が試してみた:

package.Workbook.FullCalcOnLoad = true; 

package.Workbook.Calculate(); 

を成功せず。

UPDATE

私はEPPlusでこれを行うためのメカニズムを見つけることができなかったので、まだ答えがあるかどうかを知りたいです。ただし、既存のExcelファイルを編集しているため、Excelで既存のピボットテーブルのプロパティを編集して、最初の読み込み時に自動的に更新するように設定を変更することができました。

答えて

0

ピボットテーブルには、Excelファイル内に独自のcalcコンテキストがあります。 FullCalcOnLoadプロパティとCalculate()メソッドの計算を操作します

私はthis code from hereがあなたに役立つでしょう。

foreach (Worksheet sheet in package.Workbook.Sheets) 
{ 
    foreach (PivotTable pivotTable in sheet.PivotTables()) 
    { 
     pivotTable.PivotCache().Refresh(); //could be some other method, but i hope you find right one 
    } 
} 
+3

Office Interopを使用しないので、このソリューションでは不十分です – CSL

4

EPPlusを使用してこれを達成する方法が見つかりませんでした。

ただし、ファイルを変更する前に、ピボットテーブルの[ファイルを開くときにデータを更新する]プロパティを手動で有効にすると、Excelを使用してファイルを開くと、ピボットテーブルの内容が変更されたデータ。このプロパティは、[ピボットテーブル]オプションの[データ]タブにあります。