分组可以帮助您更清晰地查看数据,并仅显示要分析的数据。使用 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® 中打开)。