# Group Shapes

Group or ungroup shapes in a worksheet to perform certain action on a bunch of shapes together using DsExcel.

## Content

DsExcel allows you to group or ungroup shapes in a worksheet. Shapes can be grouped together when there is a need to perform certain action on the bunch of shapes together. For example: adding similar style to shapes, aligning, rotating, copying or pasting the grouped shapes together. It does not only saves a considerable amount of time and efforts but also helps in ensuring that the desired consistency is maintained in all the shapes.

## Group Shapes

Several shapes can be grouped together using the [Group](/document-solutions/dot-net-excel-api/api/online/DS.Documents.Excel/GrapeCity.Documents.Excel.Drawing.IShapeRange.Group.html) method of the [IShapeRange](/document-solutions/dot-net-excel-api/api/online/DS.Documents.Excel/GrapeCity.Documents.Excel.Drawing.IShapeRange.html) interface. The **IShapeRange** interface represents the range of the shapes which needs to be grouped together. The grouped shapes behave as a single shape.
Refer to the following example code to group shapes.

```csharp
// Initialize workbook
Workbook workbook = new Workbook();
// Fetch default worksheet 
IWorksheet worksheet = workbook.Worksheets[0];
//Creating shapes collection for activeSheet
IShapes shapes = workbook.ActiveSheet.Shapes;

// Adding Shapes to shapes collection
IShape ShapeBegin = shapes.AddShape(AutoShapeType.Wave, 10, 10, 100, 100);
IShape EndBegin = shapes.AddShape(AutoShapeType.RoundedRectangle, 200, 200, 100, 100);
// Adding Connector Shape to shapes collection
IShape ConnectorShape = shapes.AddConnector(ConnectorType.Straight, 10, 10, 101, 101);

//Connecting ShapeBegin & EndBegin shapes by connector shape
ConnectorShape.ConnectorFormat.BeginConnect(ShapeBegin, 3);
ConnectorShape.ConnectorFormat.EndConnect(EndBegin, 0);

//Adding IsoscelesTriangle shape to shapes collection
shapes.AddShape(AutoShapeType.IsoscelesTriangle, 370.8, 50.8, 81.6, 102.0);

//Creating shpRange collection to group certain shapes as given in array
IShapeRange shpRange = shapes.Range[new string[3] { shapes[0].Name, shapes[1].Name, shapes[2].Name }];

// Grouping Shapes
IShape grouped = shpRange.Group();
// Setting Style for Grouped shape together
grouped.Line.Color.RGB = System.Drawing.Color.DarkOrange;
grouped.Fill.Color.RGB = System.Drawing.Color.LightGreen;
Console.WriteLine("Group Name is: " + grouped.Name);


// Saving workbook to Xlsx
workbook.Save(@"GroupedShapes.xlsx", SaveFileFormat.Xlsx);
```

![](https://cdn.mescius.io/document-site-files/images/e333ad47-35da-43f9-a389-25433765f491/images/shape-group.png)

## Ungroup Shapes

A group of shapes in a specified range can be ungrouped using the [Ungroup](/document-solutions/dot-net-excel-api/api/online/DS.Documents.Excel/GrapeCity.Documents.Excel.Drawing.IShape.Ungroup.html) method of the [IShape](/document-solutions/dot-net-excel-api/api/online/DS.Documents.Excel/GrapeCity.Documents.Excel.Drawing.IShape.html) interface.
Refer to the following example code to ungroup shapes.

```csharp
// Initialize workbook
Workbook workbook = new Workbook();
// Open workbook
workbook.Open(@"9-GroupedShapes.xlsx");
IShapes shapes = workbook.Worksheets[0].Shapes;

// UnGroup Shapes
for (int i = 0; i < shapes.Count; i++)
{
    if (shapes[i].Type == ShapeType.Group) // Or,  if (shapes[i].Name == "Group 1")
        shapes[i].Ungroup();
}

// Or, we can just pass GroupName to Ungroup it
// shapes["Group 1"].Ungroup();

// Saving workbook to Xlsx
workbook.Save(@"10-UnGroupedShapes.xlsx", SaveFileFormat.Xlsx);
```