2013-05-02 12 views
5

私はこれが私に尋ねた2つの質問のうち少なくとも1つにお答えしたいと思っています。hereですが、EPPlus/OpenXMLでPivotCacheを作成する方法を探しています。どのようにそれを行うのかを示すオンラインで/何かをドキュメントで見つけることができます。OpenMML/EPPlus - .NETでPivotCacheを作成する

だから、私はEPPlusで作成したExcelシート、wksRawDataを持っていると私はwksRawData.Cells(wksRawData.Dimension.Address)のピボットキャッシュに基づいてピボットテーブルと第二のシートを作成したいsuposing - その後、私はwksRawDataを削除することができますが、まだ続けるの希望でピボットテーブル。どうすればいい?

これまでのところ、私の2番目のワークシートにピボットテーブルを作成するための私のコードは次のとおりです。

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) 

は、このまたは他の質問上の任意およびすべてのヘルプは本当にいただければ幸いですPLEASE - それはC#であるかどうかVB、EPPlusまたはOpenXML - 私はちょうどこの作業を取得する必要があります!

感謝!

答えて

0

私は別のシートからデータを追加したいと考えています。あなたの他のスレッドで私のポストは、完全なコード「PivoTables.Add()」は、以下のツールチップを参照してくださいを呼び出すEPPlus Pivot Table - Collapse entire field

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

を示しています。

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

私はあなたがここでやって意味しているものについて少し困惑している...私の挑戦は、私は2番目のシートにデータに基づいてピボットテーブルを作成した後、第2のシートを削除したいということです。問題は、EPPlus経由で2番目のシートを削除すると、ワークブックを開くときにピボット・テーブルが空になることです。私の論理は、Pivo​​tCacheにデータを保存することでした(2番目のシートを削除することができます)が、私はそれを行う方法を見つけることができません。 –

+0

他のQからあなたのロジックに従って、workbook_openのコードを書くことができました。これはワークブックが開くときにピボットキャッシュが自動的に作成されると2番目のシートを削除しますが、ここでは実際のキャッシュを作成する方法を学びたいと思います。 。 何かご意見は?? /あなたは何を提案していますか? –

関連する問題