我怎样才能改变我的数据透视表,以便以所需的方式显示数据?

我已经能够将一张数据透视表拖到舞池上,但是却一直没能把它放到舞池上 – 似乎我们一直在踩着彼此的脚趾。 我已经在表格上创build数据透视表的数据。 这个类描述了这个数据:

public class PriceVarianceData { public String Unit { get; set; } public String ShortName { get; set; } public String ItemCode { get; set; } public String Description { get; set; } public String PriceWeek { get; set; } public String Week { get; set; } public String Price { get; set; } public String Variance { get; set; } public String VarianceAverage { get; set; } public int RegionOrder { get; set; } public int ContractPrice { get; set; } } 

表单中的第一列(“A”)包含单位值,第二列(“B”)显示ShortName值等。

我正在使用下面的代码从此数据创build数据透视表:

 private void AddPivotTable() { pivotData = _xlSheet.Range["A1:K1600"]; pivotDestination = _xlSheet.Range["A1602", useDefault]; _xlBook.PivotTableWizard( Excel.XlPivotTableSourceType.xlDatabase, pivotData, pivotDestination, pivotTableName, true, true, true, true, useDefault, useDefault, false, false, Excel.XlOrder.xlDownThenOver, 0, useDefault, useDefault ); // Set variables used to manipulate the Pivot Table. pivotTable = (Excel.PivotTable)_xlSheet.PivotTables(pivotTableName); shortnamePivotField = (Excel.PivotField)pivotTable.PivotFields(2); itemcodePivotField = (Excel.PivotField)pivotTable.PivotFields(3); descriptionPivotField = (Excel.PivotField)pivotTable.PivotFields(4); priceweekPivotField = (Excel.PivotField)pivotTable.PivotFields(5); weekPivotField = (Excel.PivotField)pivotTable.PivotFields(6); regionorderPivotField = (Excel.PivotField)pivotTable.PivotFields(10); // Format the Pivot Table. pivotTable.Format(Excel.XlPivotFormatType.xlReport2); pivotTable.InGridDropZones = false; pivotTable.SmallGrid = false; pivotTable.ShowTableStyleRowStripes = true; pivotTable.TableStyle2 = "PivotStyleLight1"; // The PivotFields have the following interesting properties: // Orientation, Function, Calculation // Page Field //shortnamePivotField.Orientation = Excel.XlPivotFieldOrientation.xlPageField; // Column Field priceweekPivotField.Orientation = Excel.XlPivotFieldOrientation.xlColumnField; // Row Fields descriptionPivotField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; //regionorderPivotField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; // Data Fields //contractPricePivotField.Orientation = Excel.XlPivotFieldOrientation.xlDataField; //contractPricePivotField.Function = Excel.XlConsolidationFunction.xlSum; itemcodePivotField.Orientation = Excel.XlPivotFieldOrientation.xlDataField; itemcodePivotField.Function = Excel.XlConsolidationFunction.xlSum; } 

不可否认的是,范围值的硬编码有点复杂,但是这是一个总是返回相同(数量)数据的实验项目,所以在这种情况下它适用于这种有些人为的情况。

上面的代码并没有为数据透视表添加一个数据透视表,但是它提供了查看器的最小值,因为它没什么意义(原始数据的最后几行显示在顶部;数据透视表从行1602开始):

在这里输入图像说明

我意识到问题的存在,因为我没有指定正确的PivotFields为xlPageField,xlColumnField [s],xlRowField [s]和xlDataField [s]。 这个问题是我的一个粗心大意。 而不是围绕这些数据,我的灰色物质躺在舒适的angular落,沿着数据透视表的城墙。

我需要做什么才能改变数据透视表的外观,以便显示:

每个ItemCode的总数(例如“110051”)与ShortName无关。

…也许在另一个数据透视表:

不pipeItemCode如何,每个ShortName(例如“T&T”)的总数。

???

UPDATE

受到这里的评论的启发,我添加了列标题,它将数据透视表改变了一下:

在这里输入图像说明

更新2

下面是我想在代码中创build的一个虚拟生成的(使用GUI,而不是代码)数据透视表:

在这里输入图像说明

需要用什么代码来指定“SHORT NAME”作为“Report Filter”,这样它才会生成一个如上所示的下拉列表,并且可以select不同的ShortName值。

更新3

这是我最好的猜测:

 // Page Field shortnamePivotField.Orientation = Excel.XlPivotFieldOrientation.xlPageField; // Row Fields descriptionPivotField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; itemcodePivotField.Orientation = Excel.XlPivotFieldOrientation.xlRowField; // Data Fields pricePivotField.Orientation = Excel.XlPivotFieldOrientation.xlDataField; pricePivotField.Function = Excel.XlConsolidationFunction.xlSum; 

…但并不比扔在墙上的代码好,因为它不起作用:

在这里输入图像说明

我已经在那里了 我做了什么来开始如何完成我所需要的是在我的自动答案显示在这里的另一个问题。