2016-10-11 4 views
2

ピボットテーブルを作成するには、ピボットテーブルを生成するためのソースデータを用意する必要があります。EPPlusを使用してピボット・テーブルを作成して、1つの列の行と1組の列をフィルタリングする方法はありますか?

は私のような生データが含まれ、この目的のために、「ダミー」のシートを生成した:

enter image description here

私はそれがそうのように生成されるように、そのデータからピボットテーブルを生成する必要が

enter image description here

それは行をフィルタリングすることを可能にする「説明」欄(唯一の「ペッパー」または何を示している)AND displaに月の列のフィルタにフィルタを持っている必要がありIOW、ユーザーが表示する「月の年」列の1..13を選択できるように(最大で13桁の列(9月15日、10月15日など)を持つことができる)何がポイントになるでしょうか?)

どうすればいいですか?

private void AddPivotTable() 
{ 
    var dataRange 
rawDataWorksheet.Cells[rawDataWorksheet.Dimension.Address]; 
    dataRange.AutoFitColumns(); 
    var pivotTable 
usagePivotWorksheet.PivotTables.Add(usagePivotWorksheet.Cells["A6"] 
dataRange, "ProdUsagePivot"); 
    pivotTable.MultipleFieldFilters = true; 
    pivotTable.GridDropZones = false; 
    pivotTable.Outline = false; 
    pivotTable.OutlineData = false; 
    pivotTable.ShowError = true; 
    pivotTable.ErrorCaption = "[error]"; 
    pivotTable.ShowHeaders = true; 
    pivotTable.UseAutoFormatting = true; 
    pivotTable.ApplyWidthHeightFormats = true; 
    pivotTable.ShowDrill = true; 

    var descPageField = pivotTable.Fields["Description"]; 
    pivotTable.PageFields.Add(descPageField); 
    descPageField.Sort 
OfficeOpenXml.Table.PivotTable.eSortType.Ascending; 

    var descRowField = pivotTable.Fields["Description"]; 
    pivotTable.RowFields.Add(descRowField); 

    . . . add others later 
} 

...しかし、それだけ下にデータがないと「説明」のためのフィルタを得る:私は次のことを試してみた

enter image description here

私が取得するために、まだ何をする必要がありますどのような所望の外観/機能性?

答えて

2

これを試してみてください:

は、いつものように全体PivotTableを作成し、すべての必須フィールドと計算を追加した後、RowFieldsとしてDataPivotFieldsを移動します。 VBAで

はこのようなものになります。Descriptionセルはすべて、対応する合計のために合併持ってPivotTable.MergeLabels = True

With PivotTable 
    .DataPivotField.Orientation = xlRowField 
    .Position = 2 
End With 

もこれを適用する必要があります。

PD。ピボットテーブルをコード内のピボットテーブルオブジェクトに置き換えます。

関連する問題