Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OpenXML/EPPlus-在.Net中创建数据透视缓存_C#_.net_Vb.net_Openxml_Epplus - Fatal编程技术网

C# OpenXML/EPPlus-在.Net中创建数据透视缓存

C# OpenXML/EPPlus-在.Net中创建数据透视缓存,c#,.net,vb.net,openxml,epplus,C#,.net,Vb.net,Openxml,Epplus,我希望这至少能帮助我回答我提出的两个问题中的一个,但我正在寻找如何在EPPlus/OpenXML中创建数据透视缓存,但在他们的文档中找不到任何在线/显示如何创建数据透视缓存的内容 因此,假设我有一张Excel工作表,wksRawData是在ePlus中创建的,我想创建第二张工作表,其中包含基于wksRawData.Cells(wksRawData.Dimension.Address)的透视缓存的透视表,希望这样我可以删除wksRawData,但仍然保留透视表。我该怎么做 到目前为止,我在第二个工

我希望这至少能帮助我回答我提出的两个问题中的一个,但我正在寻找如何在EPPlus/OpenXML中创建数据透视缓存,但在他们的文档中找不到任何在线/显示如何创建数据透视缓存的内容

因此,假设我有一张Excel工作表,
wksRawData
是在ePlus中创建的,我想创建第二张工作表,其中包含基于
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中-我只需要让它工作


谢谢

我相信您想从其他工作表中添加数据。我在你另一个帖子中的帖子显示了完整的代码

调用“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删除第二张工作表,则在打开工作簿时,数据透视表将显示为空。我的逻辑是将数据保存在数据透视缓存中(这样我就可以删除第二张工作表),但我想不出一个方法。按照另一个Q中的逻辑,我可以为工作簿_open编写代码,一旦工作簿打开时excel自动创建数据透视缓存,就会删除第二张工作表,但在这里我想学习如何创建实际的缓存。。。有什么想法吗你有什么建议??
// 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