Excel数据透视表:移动行到列的值字段

我正在开发一个excel插件在C#中,并且必须创build一个数据透视表,我不知道如何组织数据,它应该如何。

首先是数据源:

枢轴数据源

这就是最终的数据透视表应该是什么样的:

枢轴应该看起来像这样

但是我只能得到这样的东西,我不知道如何改变我的代码:

这是我的代码用它做的 -

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

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

UPDATE2:

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

 /* 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); 

您将不得不改变数据字段的方向:

VBA代码是

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

这转换成C#代码:

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

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

尝试这个:

 pivotTable.DataOnRows = false;