2013-05-02 17 views
5

Mam nadzieję, że to może mi pomóc, przynajmniej odpowiedzieć na jedno z dwóch pytań, które zadałem here, ale szukam, jak utworzyć PivotCache w EPPlus/OpenXML i mogę " • znaleźć cokolwiek online/w swojej dokumentacji, która pokazuje, jak to zrobić.OpenXML/EPPlus - Utwórz PivotCache w .Net

Więc suposing Mam jeden arkusz Excel, wksRawData stworzony w EPPlus i chcę utworzyć drugi arkusz ze stołem obrotowym w oparciu o pamięci podręcznej przegubu wksRawData.Cells(wksRawData.Dimension.Address) - w nadziei, że to może usunąć wksRawData ale nadal zachować Stół obrotowy. Jak to zrobić?

tej pory mój kod do tworzenia tabeli przestawnej w moim drugim arkuszu jest:

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) 

PROSZĘ, wszelkie pomoc w tej lub innej sprawie rzeczywiście byłoby mile widziane - czy to w C# lub VB, EPPlus lub OpenXML - Po prostu muszę działać!

DZIĘKI!

Odpowiedz

0

Wierzę, że chcesz dodać dane z innego arkusza. Mój post w innym wątku pokazuje pełny kod EPPlus Pivot Table - Collapse entire field

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

wzywającą „PivoTables.Add()” zobaczyć podpowiedzi poniżej.

// 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 
+0

Jestem nieco zdezorientowany tym, co chcesz tutaj zrobić ... Moim wyzwaniem jest to, że chcę utworzyć tabelę przestawną na podstawie danych z drugiego arkusza, a następnie usunąć drugi arkusz. Wyzwanie polega na tym, że po usunięciu drugiego arkusza za pomocą EPPlus tabela przestawna pojawia się pusta po otwarciu skoroszytu. Moją logiką było następnie zapisanie danych w PivotCache (co pozwoliłoby mi skasować drugi arkusz), ale nie mogę wymyślić, jak to zrobić. –

+0

Podążając za twoją logiką z drugiej Q, mógłbym napisać kod dla workbook_open, który usunąłby drugi arkusz po automatycznym utworzeniu pliku przestawnego przez program Excel, gdy otworzy się skoroszyt, ale tutaj chciałbym się nauczyć, jak utworzyć rzeczywistą pamięć podręczną. . Jakieś pomysły??/Co sugerujesz? –