2013-05-02 11 views
5

Spero che questo mi possa aiutare, almeno, a rispondere a una delle 2 domande che ho posto a here, ma sto cercando come creare un PivotCache in EPPlus/OpenXML e puo ' trovare qualcosa online/nella loro documentazione che mostra come farlo.OpenXML/EPPlus - Crea PivotCache in .Net

Così, suposing ho un foglio Excel, wksRawData creato nel EPPlus e voglio creare un secondo foglio con una tabella pivot basata sulla cache perno della wksRawData.Cells(wksRawData.Dimension.Address) - nella speranza che poi ho potuto cancellare wksRawData ma ancora mantenere il tabella pivot. Come potrei farlo?

Finora, il mio codice per creare la tabella pivot nel mio secondo foglio di lavoro è:

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) 

PER FAVORE, qualsiasi aiuto su questo o l'altra domanda realmente sarebbe apprezzato - Che sia in C# o VB, EPPlus o OpenXML - Ho solo bisogno di farlo funzionare !!!

GRAZIE!

risposta

0

Credo che vogliate aggiungere dati da un altro foglio. Il mio post nel tuo altro thread mostra il codice completo EPPlus Pivot Table - Collapse entire field

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

chiama "PivoTables.Add()" vedi descrizione comandi qui di seguito.

+0

Sono un po 'confuso su cosa si intende fare qui ... La mia sfida è che voglio creare la tabella pivot basata sui dati in un secondo foglio e quindi eliminare il secondo foglio. La sfida è che se si elimina il secondo foglio tramite EPPlus, la tabella pivot viene visualizzata vuota quando si apre la cartella di lavoro. La mia logica era quella di salvare i dati in una PivotCache (che poi mi avrebbe permesso di cancellare il secondo foglio), ma non riesco a trovare un modo per farlo. –

+0

Seguendo la logica dell'altro Q, potrei scrivere il codice per workbook_open che eliminerebbe il secondo foglio una volta che la pivotcache viene automaticamente creata da excel quando si apre la cartella di lavoro, ma qui mi piacerebbe imparare come creare la cache effettiva .. . Qualche idea??/Cosa stai suggerendo ?? –