Previous topicNext topic
Help > 开发指南 > Excel > API > 示例 > 数据透视表 >
如何:对数据透视表中的项进行分组

分组可以帮助您更清晰地查看数据,并仅显示要分析的数据。使用 PivotField.GroupItems 方法重载对数据透视表中的数据进行分组。

选择要执行的任务。

按日期对数据透视表进行分组

以下示例演示如何按季度和月份对“日期”字段中的项目进行分组。为此,请使用 PivotField.GroupItems 方法,并将 PivotFieldGroupByType.Quarters 和 PivotFieldGroupByType.Months 值组合作为参数传递。

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

'按数据透视表在集合中的名称访问数据透视表。
Dim pivotTable As DevExpress.Spreadsheet.PivotTable = worksheet.PivotTables("PivotTable1")
'按“DATE”字段在集合中的名称访问该字段。
Dim field As DevExpress.Spreadsheet.PivotField = pivotTable.Fields("DATE")
'按季度和月份对字段项目进行分组。
field.GroupItems(DevExpress.Spreadsheet.PivotFieldGroupByType.Quarters Or DevExpress.Spreadsheet.PivotFieldGroupByType.Months)

C#
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// 按数据透视表在集合中的名称访问数据透视表。
DevExpress.Spreadsheet.PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// 按“DATE”字段在集合中的名称访问该字段。
DevExpress.Spreadsheet.PivotField field = pivotTable.Fields["DATE"];
// 按季度和月份对字段项目进行分组。
field.GroupItems(DevExpress.Spreadsheet.PivotFieldGroupByType.Quarters | DevExpress.Spreadsheet.PivotFieldGroupByType.Months);

下图显示了生成的报表(工作簿在 Microsoft® Excel® 中打开)。

按数字对数据透视表进行分组

若要在代码中对数值字段进行分组,请使用带有 PivotFieldGroupByType.NumericRanges 参数的 PivotField.GroupItems 方法,指定对字段进行分组的最小和最大数字以及每个组的间隔。

以下示例按千对销售额进行分组。

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("Sales")
'将字段项从1000到4000按1000分组。
field.GroupItems(1000, 4000, 1000, DevExpress.Spreadsheet.PivotFieldGroupByType.NumericRanges)

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["Sales"];
// 将字段项从1000到4000按1000分组。
field.GroupItems(1000, 4000, 1000, DevExpress.Spreadsheet.PivotFieldGroupByType.NumericRanges);

下图显示了生成的报表(工作簿在 Microsoft® Excel® 中打开)。

对所选项目进行分组

下面的示例演示如何在“州”字段中创建包含前三个项的组(亚利桑那州、加利福尼亚州和科罗拉多州)。为此,请使用 PivotField.GroupItems 方法,并将项目索引列表 (0, 1, 2) 作为参数传递。

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

'按数据透视表在集合中的名称访问数据透视表。
Dim pivotTable As DevExpress.Spreadsheet.PivotTable = worksheet.PivotTables("PivotTable1")
'按“State”字段在集合中的名称访问该字段。
Dim field As DevExpress.Spreadsheet.PivotField = pivotTable.Fields("State")
'将“State”字段添加到列轴区域。
pivotTable.ColumnFields.Add(field)

'将字段中的前三个项目分组。
Dim items As IEnumerable(Of Integer) = New List(Of Integer)() From {0, 1, 2}
field.GroupItems(items)
'按字段集合中已创建的分组字段的索引访问该字段。
Dim groupedFieldIndex As Integer = pivotTable.Fields.Count - 1
Dim groupedField As DevExpress.Spreadsheet.PivotField = pivotTable.Fields(groupedFieldIndex)
'将分组项目标题设置为“West”。
groupedField.Items(0).Caption = "West"

C#
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// 按数据透视表在集合中的名称访问数据透视表。
DevExpress.Spreadsheet.PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// 按“State”字段在集合中的名称访问该字段。
DevExpress.Spreadsheet.PivotField field = pivotTable.Fields["State"];
// 将“State”字段添加到列轴区域。
pivotTable.ColumnFields.Add(field);

// 将字段中的前三个项目分组。
IEnumerable<int> items = new List<int>() { 0, 1, 2 };
field.GroupItems(items);
// 按字段集合中已创建的分组字段的索引访问该字段。
int groupedFieldIndex = pivotTable.Fields.Count - 1;
DevExpress.Spreadsheet.PivotField groupedField = pivotTable.Fields(groupedFieldIndex);
// 将分组项目标题设置为“West”。
groupedField.Items[0].Caption = "West";

下图显示了生成的报表(工作簿在 Microsoft® Excel® 中打开)。

取消数据分组

若要取消数据透视表中的数据分组,请使用 PivotField.UngroupItems 方法重载。

下面的示例创建两组“状态”项,然后取消对第一组的分组。

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

'按数据透视表在集合中的名称访问数据透视表。
Dim pivotTable As DevExpress.Spreadsheet.PivotTable = worksheet.PivotTables("PivotTable1")
'按“State”字段在集合中的名称访问该字段。
Dim field As DevExpress.Spreadsheet.PivotField = pivotTable.Fields("State")
'将“State”字段添加到列轴区域。
pivotTable.ColumnFields.Add(field)

'将字段中的前三个项目分组。
Dim items As IEnumerable(Of Integer) = New List(Of Integer)() From {0, 1, 2}
field.GroupItems(items)
'按字段集合中已创建的分组字段的索引访问该字段。
Dim groupedFieldIndex As Integer = pivotTable.Fields.Count - 1
Dim groupedField As DevExpress.Spreadsheet.PivotField = pivotTable.Fields(groupedFieldIndex)
'将分组项目标题设置为“West”。
groupedField.Items(0).Caption = "West"

'将其余字段项分组。
items = New List(Of Integer)() From {3, 4, 5}
field.GroupItems(items)
'将分组项目标题设置为“Midwest”
groupedField.Items(1).Caption = "Midwest"

'取消对“West”项目的分组
items = New List(Of Integer) From {0}
groupedField.UngroupItems(items)

C#
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["Report1"];
workbook.Worksheets.ActiveWorksheet = worksheet;
// 按数据透视表在集合中的名称访问数据透视表。
DevExpress.Spreadsheet.PivotTable pivotTable = worksheet.PivotTables["PivotTable1"];
// 按“State”字段在集合中的名称访问该字段。
DevExpress.Spreadsheet.PivotField field = pivotTable.Fields["State"];
// 将“State”字段添加到列轴区域。
pivotTable.ColumnFields.Add(field);

// 将字段中的前三个项目分组。
IEnumerable<int> items = new List<int>() { 0, 1, 2 };
field.GroupItems(items);
// 按字段集合中已创建的分组字段的索引访问该字段。
int groupedFieldIndex = pivotTable.Fields.Count - 1;
DevExpress.Spreadsheet.PivotField groupedField = pivotTable.Fields(groupedFieldIndex);
// 将分组项目标题设置为“West”。
groupedField.Items[0].Caption = "West";

// 将其余字段项分组。
items = new List<int>() { 3, 4, 5 };
field.GroupItems(items);
// 将分组项目标题设置为“Midwest”
groupedField.Items[1].Caption = "Midwest";

// 取消对“West”项目的分组
items = new List<int>() { 0 };
groupedField.UngroupItems(items);

下图显示了生成的报表(工作簿在 Microsoft® Excel® 中打开)。