Изменить диапазон сводной таблицы с EPPlus существующего файла - PullRequest
0 голосов
/ 10 мая 2019

Можно ли изменить диапазон сводной таблицы, а затем обновить значения с помощью EPPlus существующего файла?

Теперь я использую EPPlus в сочетании с Excel Interopt ... EPPlus добавляет новый лист с данными в существующий xlsx с четко определенной сводной таблицей ... затем я обновляю источник данных с помощью кода, подобного следующему:

private bool RefreshPivotTable(string file, string sheetName, string pivotTableName, string sourceData)
    {
        try
        {
            Type excelType = Type.GetTypeFromProgID("Excel.Application");

            dynamic excel = Activator.CreateInstance(excelType);
            dynamic workbook = excel.Workbooks.Open(file);
            dynamic sheet = workbook.Sheets[sheetName];
            dynamic pivotTable = sheet.PivotTables(pivotTableName);

            pivotTable.SourceData = sourceData;
            pivotTable.RefreshTable();

            workbook.Save();
            workbook.Close();
            excel.Application.Quit();

            return true;
        }
        catch(Exception ex)
        {
            return false;
        }
    }

Но я бы хотел сделать все с EPPlus. Спасибо.

1 Ответ

0 голосов
/ 11 мая 2019

Боюсь, что это возможно только частично.

Глядя на документацию EPPlus , вы найдете документацию по сводным таблицам и ее сводному кэшу с исходным диапазоном и аналогичными свойствами. Но нет никаких сведений об обновлении сводных таблиц. Это следует сделать после открытия книги в Excel - может быть, этого вам достаточно?

Как бы то ни было, мое понимание EPPlus заключается в чтении манипулирования структурой файлов Excel , без каких-либо вычислений в них - что остается в области самого приложения Excel.

Поправка: Я должен исправить себя: с EPPlus версии 4 возможно общее вычисление в соответствии с этой учебной страницей , вы можете запускать worksheet.Calculate() и другие команды. Но все еще нет упоминания сводных таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...