我怎样才能改变我的数据透视表,以便它以所需的方式显示数据?
How can I alter my PivotTable so that it displays the data in the desired way?
我已经能够将 PivotTable 拖到舞池中,但无法让它放下 - 似乎我们一直踩到对方的脚趾。我已经在 sheet 上获得了数据,可以从中构建 Pivot Table。此 class 描述了该数据:
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; }
}
sheet 上的第一列 ("A") 包含单位值,第二列 ("B") 显示 ShortName 值等。
我正在使用以下代码从该数据创建数据透视表Table:
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;
}
不可否认,范围值的硬编码有点愚蠢,但这是一个实验项目,它总是 return 相同(数量)的数据,所以在这种情况下它可以工作,有点做作案例.
上面的代码确实在 sheet 中添加了一个 PivotTable,但它为查看者提供的价值很小,因为它没有什么意义(原始数据的最后几行显示在顶部;PivotTable 从第 1602 行开始):
我意识到问题存在是因为我没有将正确的 PivotFields 指定为 xlPageField、xlColumnField[s]、xlRowField[s] 和 xlDataField[s]。问题是我的粗心大意之一。我的灰质并没有全神贯注于这些数据,而是沿着枢轴 Table.
的壁垒以一个静止角度松弛地躺着
我需要做什么才能改变 PivotTable 的外观,使其显示:
每个 ItemCode(例如“110051”)的总计,与 ShortName 无关。
...也许在另一个 PivotTable:
每个短名称(例如 "T&T")的总数,与 ItemCode 无关。
???
更新
受评论 here 的启发,我添加了列标题,这稍微改变了 PivotTable:
更新 2
这是我想在代码中创建的 fakely-generated(使用 GUI,而不是代码)PivotTable:
需要什么代码来将 "SHORT NAME" 指定为 "Report Filter",以便生成如上所示的 drop-down 以及可选的各种 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;
...但并不比往墙上扔代码好,因为它不起作用:
我已经走到一半了;在我对另一个问题 .
的自动回答中显示了我为开始如何完成我需要做的事情所做的工作
我已经能够将 PivotTable 拖到舞池中,但无法让它放下 - 似乎我们一直踩到对方的脚趾。我已经在 sheet 上获得了数据,可以从中构建 Pivot Table。此 class 描述了该数据:
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; }
}
sheet 上的第一列 ("A") 包含单位值,第二列 ("B") 显示 ShortName 值等。
我正在使用以下代码从该数据创建数据透视表Table:
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;
}
不可否认,范围值的硬编码有点愚蠢,但这是一个实验项目,它总是 return 相同(数量)的数据,所以在这种情况下它可以工作,有点做作案例.
上面的代码确实在 sheet 中添加了一个 PivotTable,但它为查看者提供的价值很小,因为它没有什么意义(原始数据的最后几行显示在顶部;PivotTable 从第 1602 行开始):
我意识到问题存在是因为我没有将正确的 PivotFields 指定为 xlPageField、xlColumnField[s]、xlRowField[s] 和 xlDataField[s]。问题是我的粗心大意之一。我的灰质并没有全神贯注于这些数据,而是沿着枢轴 Table.
的壁垒以一个静止角度松弛地躺着我需要做什么才能改变 PivotTable 的外观,使其显示:
每个 ItemCode(例如“110051”)的总计,与 ShortName 无关。
...也许在另一个 PivotTable:
每个短名称(例如 "T&T")的总数,与 ItemCode 无关。
???
更新
受评论 here 的启发,我添加了列标题,这稍微改变了 PivotTable:
更新 2
这是我想在代码中创建的 fakely-generated(使用 GUI,而不是代码)PivotTable:
需要什么代码来将 "SHORT NAME" 指定为 "Report Filter",以便生成如上所示的 drop-down 以及可选的各种 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;
...但并不比往墙上扔代码好,因为它不起作用:
我已经走到一半了;在我对另一个问题