簡體   English   中英

Excel pivot 表:將值字段從行移動到列

[英]Excel pivot table: move value fields from row to column

我正在 c# 中開發一個 excel 插件,並且必須創建一個 pivot 表,我不知道如何組織數據,它應該如何。

首先是數據源:

透視數據源

也就是說,最終的 Pivot 表應該如下所示:

樞軸應該看起來像這樣

但我只得到這樣的東西,我不知道我必須如何更改我的代碼:

這就是我的代碼所做的 -.-

最后我的代碼來安排數據源列:

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

您將不得不更改數據字段的方向:

VBA 代碼是

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

這轉化為 C# 代碼:

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

編輯:請注意,為了理解 pivot 表,宏記錄器會給你很好的提示。 只需在執行所需操作之前開始錄制宏,然后停止宏。 然后將代碼中的見解轉移到 C# 將很容易。

嘗試這個:

 pivotTable.DataOnRows = false;
PivotField fld = pivotTable.RowFields("Data"); fld.Orientation = XlPivotFieldOrientation.xlColumnField;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM