2016-08-29 3 views
3

Я редактирую существующую таблицу в C#, используя EPPlus. Я изменяю необработанные данные на втором листе, который используется в качестве источника данных для сводной таблицы на первом листе. Мое редактирование работает отлично, проблема заключается в том, что при загрузке электронной таблицы я должен вручную обновить сводную таблицу, нажав кнопку Refresh Data на панели инструментов Excel.Обновить PivotTable EPPlus

Есть ли способ сделать это с помощью C# EPPlus?

Я пробовал:

package.Workbook.FullCalcOnLoad = true; 

и

package.Workbook.Calculate(); 

без успеха.

UPDATE

Я не мог найти механизм для этого в EPPlus так же хотел бы знать, если есть ответ. Однако, поскольку я редактирую существующий файл Excel, мне удалось изменить свойства существующей сводной таблицы в Excel и изменить параметр для автоматического обновления при первой загрузке.

ответ

0

В сводных таблицах есть собственный контекст calc в файле Excel. Вы управляете вычислением формул с использованием 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 содержимое сводной таблицы было рассчитано на основе измененные данные. Это свойство можно найти на вкладке «Данные» в параметрах сводной таблицы.