【问题标题】:Excel pivot table: move value fields from row to columnExcel 数据透视表:将值字段从行移动到列
【发布时间】:2014-06-03 09:29:07
【问题描述】:

我正在用c#开发一个excel插件,必须创建一个数据透视表,我不知道如何组织数据,应该如何。

首先是数据源:

这就是最终数据透视表的样子:

但我只得到这样的东西,我不知道我必须如何更改我的代码:

最后是我排列数据源列的代码:

/* PIVOT RowFields */
Excel.PivotField nameField = pTable.PivotFields("Name");
nameField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
nameField.Position = 1;

Excel.PivotField monthField = pTable.PivotFields("Monat");
monthField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
monthField.Position = 2;

/* PIVOT Data */
Excel.PivotField sum200Field = pTable.PivotFields("Summe 1");
sum200Field.Orientation = Excel.XlPivotFieldOrientation.xlDataField;

Excel.PivotField sum700Field = pTable.PivotFields("Summe 2");
sum700Field.Orientation = Excel.XlPivotFieldOrientation.xlDataField;

Excel.PivotField sumDiffField = pTable.PivotFields("Differenz");
sumDiffField.Orientation = Excel.XlPivotFieldOrientation.xlDataField;

我正在使用 .NET Framework 4 ...我在互联网上阅读了很多文章,但我阅读的内容没有任何用处...

有人有想法吗?

更新:

正如@MP24 发布的那样,在我的代码末尾添加这两个 C# 行,列将显示在右侧,不包括名称和月份的分组:

Excel.PivotField dataField = pTable.DataPivotField;
dataField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField;

更新2:

要将月份和名称列分组,以下代码将显示如何:

/* PIVOT ZEILEN */
Excel.PivotField monthField = pTable.PivotFields("Monat");
monthField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
monthField.LayoutCompactRow = true;
monthField.LayoutForm = Excel.XlLayoutFormType.xlOutline;
monthField.set_Subtotals(1, false);

Excel.PivotField nameField = pTable.PivotFields("Name");
nameField.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
nameField.LayoutCompactRow = true;
nameField.set_Subtotals(2, false);

【问题讨论】:

    标签: c# excel pivot-table


    【解决方案1】:

    您必须更改数据字段的方向:

    VBA 代码是

    ActiveSheet.PivotTables("PivotTable1").DataPivotField.Orientation = xlColumnField
    

    这转化为 C# 代码:

    Excel.PivotField dataField = pTable.DataPivotField;
    dataField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField;
    

    编辑:请注意,为了理解数据透视表,宏记录器会给您很好的提示。只需在执行所需操作之前开始录制宏,然后停止宏。然后将代码中的见解转移到 C# 中将很容易。

    【讨论】:

    • 非常感谢。我使用了宏记录器,但这只是给了我已经使用过的提示,但是您的 C# 代码非常适合正确显示数据……还有一件事:我如何“分组”名称和月份?这两个字段显示在单独的列中。
    • 我在分组中得到它,我将它添加到我的原始帖子中=)
    • 这一行在表格构建结束时对我有用:pTable.DataPivotField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField;
    【解决方案2】:

    试试这个:

    pivotTable.DataOnRows = false;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      相关资源
      最近更新 更多