Previous topicNext topic
Help > 开发指南 > Excel > API > 示例 > 数据透视表 >
如何:创建计算项

如果预定义的聚合函数或“将值显示为”计算选项不能满足您的要求,则可以创建自己的公式,通过插入计算字段和计算项来计算数据透视表中的值。计算项是数据透视表字段中的自定义项,其值是根据同一字段中其他项的值生成的。

添加到数据透视表字段的所有计算项都存储在 PivotCalculatedItemCollection 集合中,可以使用 PivotField.CalculatedItems 属性访问该集合。使用集合的方法创建、修改或删除计算项。

计算项限制

在插入计算项之前,请考虑以下限制。

创建计算项

若要创建计算项,请使用 PivotCalculatedItemCollection.Add 方法。此方法的第一个参数允许您为计算项指定公式。

公式字符串应符合通用语法规则,并且仅包含支持的元素。

下面的代码演示如何创建两个计算项来计算每个区域的总销售额。

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 field As DevExpress.Spreadsheet.PivotField = pivotTable.Fields("State")

'将计算项目添加到“State”字段。
field.CalculatedItems.Add("=Arizona+California+Colorado", "West Total")
field.CalculatedItems.Add("=Illinois+Kansas+Wisconsin", "Midwest Total")

C#
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// 按数据透视表在集合中的名称访问数据透视表。
DevExpress.Spreadsheet.PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// 按数据透视字段在集合中的名称访问数据透视字段。
DevExpress.Spreadsheet.PivotField field = pivotTable.Fields["State"];

// 将计算项目添加到“State”字段。
field.CalculatedItems.Add("=Arizona+California+Colorado", "West Total");
field.CalculatedItems.Add("=Illinois+Kansas+Wisconsin", "Midwest Total");

生成的数据透视表如下图所示(工作簿在 Microsoft® Excel® 中打开)。

修改计算项

若要更改计算项的公式,请通过 PivotCalculatedItemCollection 集合中的索引访问所需项,然后将新公式分配给项的 PivotItem.Formula 属性。若要重命名计算项,请使用 PivotItem.Caption 属性。

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 field As Express.Spreadsheet.PivotField = pivotTable.Fields("Customer")

'将计算项目添加到“Customer”字段。
Dim item As Express.Spreadsheet.PivotItem = field.CalculatedItems.Add("='Big Foods'*110%", "Big Foods Sales Plan")

'更改计算项的公式。
item.Formula = "='Big Foods'*115%"

C#
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// 按数据透视表在集合中的名称访问数据透视表。
DevExpress.Spreadsheet.PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// 按数据透视字段在集合中的名称访问数据透视字段。
DevExpress.Spreadsheet.PivotField field = pivotTable.Fields["Customer"];

// 将计算项目添加到“Customer”字段。
DevExpress.Spreadsheet.PivotItem item = field.CalculatedItems.Add("='Big Foods'*110%", "Big Foods Sales Plan");

// 更改计算项的公式。
item.Formula = "='Big Foods'*115%";

删除计算项

若要从字段中删除计算项,请使用 PivotCalculatedItemCollection.Remove 或 PivotCalculatedItemCollection.RemoveAt 方法。若要一次从集合中删除所有计算项,请使用 PivotCalculatedItemCollection.Clear 方法。

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 field As PivotField = pivotTable.Fields("Customer")

'将计算项目添加到“Customer”字段。
Dim item As PivotItem = field.CalculatedItems.Add("='Big Foods'*110%", "Big Foods Sales Plan")

'从集合中删除按索引计算的项。
field.CalculatedItems.RemoveAt(0)

C#
 Format:HTML Format Version:1.0 StartHTML: 165 EndHTML: 2168 StartFragment: 314 EndFragment: 2136 StartSelection: 314 EndSelection: 314
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// 按数据透视表在集合中的名称访问数据透视表。
DevExpress.Spreadsheet.PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// 按数据透视字段在集合中的名称访问数据透视字段。
DevExpress.Spreadsheet.PivotField field = pivotTable.Fields["Customer"];

// 将计算项目添加到“Customer”字段。
DevExpress.Spreadsheet.PivotItem item = field.CalculatedItems.Add("='Big Foods'*110%", "Big Foods Sales Plan");

//从集合中删除按索引计算的项。
field.CalculatedItems.RemoveAt(0);