2013-05-02 17 views
5

Bunun en azından, here sorduğum 2 sorudan birini yanıtlamada bana yardımcı olabileceğini umuyorum, ancak EPPlus/OpenXML'de bir PivotCache nasıl oluşturabileceğimi arıyorum ve ' Nasıl çevrimiçi olduğunu/nasıl yapılacağını gösteren belgelerini bulmayın.OpenXML/EPPlus - PivotCache içinde oluşturun. Net

Yani, bir Excel sayfası, wksRawData EPPlus oluşturduğunuz suposing ve ben wksRawData.Cells(wksRawData.Dimension.Address) pivot cache dayalı bir pivot tablodan ikinci bir tabaka oluşturmak istiyorum - o zaman ben wksRawData silebilir ama hala tutmak umuduyla Pivot tablo. Bunu nasıl yaparım?

Şimdiye kadar, benim ikinci çalışma sayfasında özet tablo oluşturmak için benim kodudur

:

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) 

, her türlü bu konuda yardım veya başka bir soru GERÇEKTEN mutluluk duyacağız LÜTFEN - C# olmak olsun ya VB, EPPlus veya OpenXML - Sadece bu çalışmayı almam gerek!

TEŞEKKÜRLER!

cevap

0

Başka bir sayfadan veri eklemek istediğinizi kabul ediyorum. Diğer iplik Benim sonrası tam kodu "PivoTables.Add()" aşağıda ipucunu çağıran EPPlus Pivot Table - Collapse entire field

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

göstermektedir.

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

Burada yapmak istediğiniz şey hakkında biraz kafam karıştı ... Zorluk, ikinci bir sayfadaki verilere dayanan pivot tabloyu oluşturmak ve sonra ikinci sayfayı silmektir. Sorun, ikinci sayfayı EPPlus ile silerseniz, çalışma kitabını açtığınızda pivot tablonun boş çıkmasıdır. Mantığım daha sonra verileri bir PivotCache'de saklamaktı (ki bu da ikinci sayfayı silmeme izin verecekti), ancak bunu yapmanın bir yolunu anlayamıyorum. –

+0

Diğer Q'dan mantığınızı izleyerek, çalışma kitabı açıldığında pivotcache otomatik olarak excel tarafından oluşturulduktan sonra ikinci sayfayı silecek olan workbook_open için kod yazabilirim, ancak burada gerçek önbellek nasıl oluşturulacağını öğrenmek istiyorum .. . Düşüncesi olan var mı??/Ne öneriyorsun?? –

İlgili konular