如何使用 EPPlus 创建数据透视表以筛选一列中的行以及一组列?

How can I create a PivotTable using EPPlus to filter on the rows in one column and also a set of columns?

要创建数据透视表Table,需要提供生成数据透视表的源数据Table。

我为此生成了一个 "dummy" sheet,其中包含原始数据,例如:

我需要从该数据生成一个 Pivot Table,以便它像这样生成:

IOW,它需要在 "Description" 列上有一个过滤器,允许过滤行(只显示 "Peppers" 或其他)和一个过滤器,用于显示月份列( sheet 最多可以有 13 个月的列(9 月 15 日、10 月 15 日等)),这样用户可以选择 "month year" 列中的 1..13 个来显示(从技术上讲,他们可以选择 0 , 但有什么意义)?

如何做到这一点?我试过以下方法:

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
} 

...但只获取 "Description" 的过滤器,下面没有数据:

我还需要做什么才能得到想要的 appearance/functionality?

试试这个:

照常创建整个 PivotTable,并在添加所有必填字段和计算后,将 DataPivotFields 移动为 RowFields

在VBA中会是这样的:

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

还需要应用:PivotTable.MergeLabels = True 合并 Description 单元格以获得所有相应的总计。

PD。用代码中的数据透视表对象替换数据透视表