Previous topicNext topic
Help > 开发指南 > Excel > API > 示例 > 数据透视表 >
如何:对数据字段应用自定义计算

数据区域中的摘要是根据数据字段的 PivotDataField.SummarizeValuesBy 属性计算的。默认情况下,它们按“原样”显示。但是,可以使用 PivotDataField.ShowValuesWithCalculation 方法重载将附加计算选项应用于原始汇总值,以更改它们在数据透视表中的显示方式。

可用的计算选项由 PivotShowValuesAsType 枚举的值定义,并在下表中列出。根据所选选项,您可能需要指定基字段或基字段及其基项,以用作自定义计算的基础。只有行或列区域中的字段可以用作基本字段,否则,所有结果将显示为 #N/A 错误。

计算选项 PivotShow值作为类型成员 说明 描述
% of Grand Total PivotShowValuesAsType.PercentOfTotal 占总数的百分比 将值显示为数据透视表中所有值的总和的百分比。
% of Column Total PivotShowValuesAsType.PercentOfColumn 列的百分比 将每列中的值显示为该列总值的百分比。
% of Row Total PivotShowValuesAsType.PercentOfRow 行百分比 将每行中的值显示为该行总值的百分比。
% of Parent Column Total PivotShowValuesAsType.PercentOfParentColumn 父列的百分比 将每个内列中的值显示为外列中父项总和的百分比。
% of Parent Row Total PivotShowValuesAsType.PercentOfParentRow 父行的百分比 将每个内行中的值显示为外行中父项总数的百分比。
Index PivotShowValuesAsType.Index 指数 使用以下公式计算每个汇总值的相对重要性:
((单元格中的值)
x (总计的总计)) / ((总行总计) x (总列总计))
% of Parent Total PivotShowValuesAsType.PercentOfParent 父级百分比 将数据字段中的值显示为指定基字段中父项值的百分比。
Rank Smallest to Largest PivotShowValuesAsType.RankAscending 排名升序 显示特定基字段的值的排名,将字段中的最小项列为 1,每个较大的值都具有较高的排名值。
Rank Largest to Smallest PivotShowValuesAsType.RankDescending 排名降序 显示特定基字段的值的排名,将字段中的最大项列为 1,每个较小的值都具有较高的排名值。
Running Total In PivotShowValuesAsType.RunningTotal 运行总计 将基本字段中连续项的值显示 为流动总计。
% Running Total In PivotShowValuesAsType.PercentOfRunningTotal 占运行总数的百分比 计算基域中连续项目的运行总计 占总计值的百分比。
% Of PivotShowValuesAsType.Percent 百分之 将值显示为基基项值的百分比。
Difference From PivotShowValuesAsType.Difference 差异 将值显示为与基字段中基项值的差值。
% Difference From PivotShowValuesAsType.PercentDifference 百分比差异 将值显示为基基项值的百分比差。

若要删除应用于数据字段的任何自定义计算,请将 PivotShowValuesAsType.NoCalculation 枚举成员作为参数传递给 PivotDataField.ShowValuesWithCalculation 方法,或调用 PivotDataField.ShowValuesWithoutCalculation 方法。

以下示例演示如何计算当前季度与上一季度之间的产品销售额差异。数据字段中的值使用“Sum”函数进行汇总。

Vb.Net
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("Report1")
workbook.Worksheets.ActiveWorksheet = worksheet

'按数据透视表在集合中的名称访问数据透视表。
Dim pivotTable As DevExpress.Spreadsheet.PivotTable = worksheet.PivotTables("PivotTable1")
'通过数据字段在集合中的索引访问该字段。
Dim dataField As DevExpress.Spreadsheet.PivotDataField = pivotTable.DataFields(0)
'显示当前季度与上一季度之间的产品销售额差异。
dataField.ShowValuesWithCalculation(DevExpress.Spreadsheet.PivotShowValuesAsType.Difference, pivotTable.Fields("Quarter"), DevExpress.Spreadsheet.PivotBaseItemType.Previous)

C#
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// 按数据透视表在集合中的名称访问数据透视表。
DevExpress.Spreadsheet.PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
//通过数据字段在集合中的索引访问该字段。
DevExpress.Spreadsheet.PivotDataField dataField= pivotTable.DataFields[0];
//显示当前季度与上一季度之间的产品销售额差异。
dataField.ShowValuesWithCalculation(DevExpress.Spreadsheet.PivotShowValuesAsType.Difference, pivotTable.Fields["Quarter"], DevExpress.Spreadsheet.PivotBaseItemType.Previous);

下图显示了结果。