OpenXML/EPPlus - 在.Net中创建PivotCache

Joh*_*tos 5 .net c# vb.net openxml epplus

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

所以,假设我有一张Excel表,wksRawData在EPPlus中创建,我想创建第二张表,其中包含一个基于数据库缓存的数据透视表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)
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

yed*_*txt 0

我相信您想从另一张表添加数据。我在其他线程中的帖子显示了完整代码EPPlus 数据透视表 - 折叠整个字段

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

调用“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
Run Code Online (Sandbox Code Playgroud)