OpenXML / EPPlus – 在.Net中创建PivotCache

我希望这可以帮助我,至少,回答我在这里提出的两个问题之一,但我正在寻找如何在EPPlus / OpenXML中创建一个PivotCache,并且无法在他们的文档中找到任何显示如何做到这一点。

所以,假设我有一张Excel工作表,在wksRawData创建了wksRawData,我想根据wksRawData.Cells(wksRawData.Dimension.Address)的数据透视表创建一个带有数据透视表的第二张工作表 – 希望我能删除wksRawData但仍保留数据透视表。 我该怎么办?

到目前为止,我在第二个工作表中创建数据透视表的代码是:

  Dim wksRawData As ExcelWorksheet = wbk.Worksheets("Raw Data") Dim wksPvtTbl As ExcelWorksheet = wbk.Worksheets("PivotTbl") ' Insert the Pivot Table to the sheet Dim DataRange As ExcelRange = wksRawData.Cells(wksRawData.Dimension.Address) Dim pvtTable As OfficeOpenXml.Table.PivotTable.ExcelPivotTable = wksPvtTbl.PivotTables.Add(wksPvtTbl.Cells("B4"), DataRange, "MyPivotTable") pvtTable.Compact = True pvtTable.CompactData = True pvtTable.Outline = True pvtTable.OutlineData = True pvtTable.ShowHeaders = True pvtTable.UseAutoFormatting = True pvtTable.ApplyWidthHeightFormats = True pvtTable.ShowDrill = True pvtTable.RowHeaderCaption = "Caption" ' Set the top field Dim r1 As OfficeOpenXml.Table.PivotTable.ExcelPivotTableField = pvtTable.Fields("FirstField") r1.Sort = OfficeOpenXml.Table.PivotTable.eSortType.Ascending pvtTable.RowFields.Add(r1) ' Set the second field Dim r2 As OfficeOpenXml.Table.PivotTable.ExcelPivotTableField = pvtTable.Fields("SecondField") r2.Sort = OfficeOpenXml.Table.PivotTable.eSortType.Ascending pvtTable.RowFields.Add(r2) r2.ShowAll = False ' Set the DataField Dim df1 As OfficeOpenXml.Table.PivotTable.ExcelPivotTableField = pvtTable.Fields("DataField") df1.SubTotalFunctions = OfficeOpenXml.Table.PivotTable.eSubTotalFunctions.Sum pvtTable.DataFields.Add(df1) 

请不要理解这个或其他问题的任何和所有帮助 – 无论是在C#还是VB,EPPlus或OpenXML中 – 我只需要让这个工作!

谢谢!

我相信你想从另一张纸上添加数据。 我在你的其他post中的post显示完整代码EPPlus数据透视表 – 折叠整个字段

 var pt = wsPivot1.PivotTables.Add(wsPivot1.Cells["A1"], ws.Cells["K1:N11"], "Pivottable1"); 

调用“PivoTables.Add()”请参阅下面的工具提示。

 // Summary: // Create a pivottable on the supplied range // // Parameters: // Range: // The range address including header and total row // // Source: // The Source data range address // // Name: // The name of the table. Must be unique // // Returns: // The pivottable object