2013-05-02 8 views
5

Ich hoffe, dass dies mir zumindest helfen könnte, eine der 2 Fragen zu beantworten, die ich gestellt habe here, aber ich schaue, wie man einen PivotCache in EPPlus/OpenXML erstellt und ' Ich finde etwas online/in ihrer Dokumentation, das zeigt, wie es geht.OpenXML/EPPlus - Erstelle PivotCache in .Net

So suposing Ich habe ein Excel-Sheet, wksRawData in EPPlus erstellt, und ich möchte ein zweites Blatt mit einer Pivot-Tabelle auf dem Schwenk Cache von wksRawData.Cells(wksRawData.Dimension.Address) Basis schaffen - in der Hoffnung, dass dann ich wksRawData löschen konnte, aber nach wie vor die halten Pivot-Tabelle. Wie würde ich das tun?

Bisher mein Code die Pivot-Tabelle in meinem zweiten Arbeitsblatt zum Erstellen ist:

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) 

BITTE, irgendwelche und alle Hilfe zu diesem Thema oder die andere Frage wäre wirklich zu schätzen - sei es in C# oder VB, EPPlus oder OpenXML - ich muss nur funktionieren !!!

DANKE!

Antwort

0

Ich glaube, Sie möchten Daten von einem anderen Blatt hinzufügen. Mein Beitrag in Ihrem anderen Thread zeigt vollständigen Code EPPlus Pivot Table - Collapse entire field

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

Aufruf "PivoTables.Add()" Werkzeugspitze unten.

+0

Ich bin ein wenig verwirrt über das, was Sie hier tun wollen ... Meine Herausforderung ist, dass ich die Pivot-Tabelle basierend auf Daten in einem zweiten Blatt erstellen und dann das zweite Blatt löschen möchte. Die Herausforderung besteht darin, dass beim Löschen des zweiten Blattes über EPPlus die Pivot-Tabelle leer ist, wenn Sie die Arbeitsmappe öffnen. Meine Logik war dann, die Daten in einem PivotCache zu speichern (was mir dann erlauben würde, das zweite Blatt zu löschen), aber ich kann mir nicht vorstellen, wie ich das machen könnte. –

+0

Nach Ihrer Logik von der anderen Q, könnte ich Code für workbook_open schreiben, die das zweite Blatt löschen würde, sobald der Pivotcache automatisch von Excel erstellt wird, wenn die Arbeitsmappe öffnet, aber hier möchte ich lernen, wie Sie den tatsächlichen Cache erstellen. Irgendwelche Gedanken ??/Was schlägst du vor?? –

Verwandte Themen