首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用现有文件的EPPlus更改枢轴表的范围

用现有文件的EPPlus更改枢轴表的范围
EN

Stack Overflow用户
提问于 2019-05-10 20:19:19
回答 2查看 1.7K关注 0票数 2

是否可以更改透视表的范围,然后用存在文件的EPPlus刷新值?

现在我使用EPPlus与Excel .EPPlus在现有的xlsx中添加具有定义良好的枢轴表的数据的新表.然后我用如下代码刷新数据源:

代码语言:javascript
运行
复制
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做所有的事情。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-08-06 21:12:13

使用EPPlus:

代码语言:javascript
运行
复制
            var excelWorkbook = new FileInfo(excelWorkbookPath);
            using (var excelPackage = new ExcelPackage(excelWorkbook))
            {
                var rawDataWorksheet = excelPackage.Workbook.Worksheets[RawDataWorksheetName];

                var pivotTableWorksheet = excelPackage.Workbook.Worksheets[PivotTableWorksheetName];
                pivotTableWorksheet.PivotTables[0 /* Or whichever index */].CacheDefinition.SourceRange = rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Start.Row, rawDataWorksheet.Dimension.Start.Column, rawDataWorksheet.Dimension.End.Row, rawDataWorksheet.Dimension.End.Column];
            }

如果您使用的是Excel模板工作簿(而不是创建一个全新的工作簿),您还应该执行以下操作:

  1. 转到数据透视表选项,检查“打开文件时刷新数据”:https://www.extendoffice.com/documents/excel/1859-excel-refresh-pivot-table-on-open.html

  1. (可选)如果需要,用户可以在他们的http://www.corporatefocus.com/support/how-to-disable-protected-view-in-microsoft-excel#:~:text=In%20Excel%20go%20to%20File,Enable%20All%20Macros%20by%20default安装中禁用“受保护的视图”。

票数 0
EN

Stack Overflow用户

发布于 2019-05-11 08:34:02

恐怕这只是部分的可能。

查看EPPlus文档,您将发现有关数据透视表及其带有源范围和类似属性的枢轴缓存的文档。但是对于提神的枢轴表却没有给出任何说明。这应该在打开Excel中的工作簿时完成--也许这对您来说已经足够了?

无论如何,我对EPPlus的理解是阅读操作Excel文件的结构,而不是在它们中进行任何计算--这仍然在Excel应用程序本身的域中。

修正::我必须更正自己:一般计算是可能的,从EPPlus版本4到本教程页,您可以运行worksheet.Calculate()和其他命令。但仍然没有提到枢轴表。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56084332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档