![](/img/trans.png)
[英]No data showing when programmatically creating Excel pivot table using C# and adding fields to row labels
[英]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.