【问题标题】:OpenXML / EPPlus - Create PivotCache in .NetOpenXML / EPPlus - 在 .Net 中创建 PivotCache
【发布时间】:2013-04-27 02:17:08
【问题描述】:

我希望这至少可以帮助我回答我提出的两个问题之一here,但我正在寻找如何在 EPPlus/OpenXML 中创建 PivotCache 并且无法在线/在他们的说明如何操作的文档。

所以,假设我在 EPPlus 中创建了一个 Excel 工作表 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 中 - 我只需要让它工作!!!

谢谢!

【问题讨论】:

    标签: c# .net vb.net openxml epplus


    【解决方案1】:

    我相信您想从另一张表中添加数据。我在你另一个帖子中的帖子显示了完整的代码EPPlus Pivot Table - Collapse entire field

    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
    

    【讨论】:

    • 我对你在这里的意思有点困惑......我的挑战是我想根据第二张工作表中的数据创建数据透视表,然后删除第二张工作表.挑战在于,如果您通过 EPPlus 删除第二张工作表,当您打开工作簿时,数据透视表将变为空。我的逻辑是将数据保存在 PivotCache 中(然后我可以删除第二张工作表),但我想不出办法。
    • 按照另一个 Q 的逻辑,我可以为 workbook_open 编写代码,一旦工作簿打开时由 excel 自动创建数据透视缓存,它将删除第二张工作表,但在这里我想了解如何创建实际的缓存...有什么想法吗? / 你有什么建议??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多