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;