To merge a range, use one of two ways below:
// get current active worksheet var worksheet = reoGridControl1.CurrentWorksheet; // way 1: call method of worksheet worksheet.MergeRange("B3:E5"); // way 2: merge via range instance var range = worksheet.Ranges["B3:E5"]; range.Merge();
To unmerge a range:
worksheet.UnmergeRange("B3:E5"); // or: var range = worksheet.Ranges["B3:E5"]; range.Unmerge();
Undo & Redo & Repeat
Merge and Unmerge could be done by action, performing by action that allows the operation could be undone.
To merge a range by action:
To unmerge range by action:
When using extended edition, script execution is available. To merge and unmerge by script:
var sheet = workbook.CurrentWorksheet; sheet.mergeRange(new Range("B3:E5")); sheet.unmergeRange(new Range("B3:E5"));
Example: Merge or unmerge current selected range
var sheet = workbook.CurrentWorksheet; sheet.mergeRange(grid.selection); sheet.unmergeRange(grid.selection);
UnmergeRange method will find and unmerge all merged cells in a specified range. For example, merged cells A, B and C below will be unmerged if the red range is passed as argument.
Check for merged cell
Only the most top left cell in a merged range is the merged cell. Except the top left cell, other cells merged into range will become invalid.
To check whether or not a cell is merged cell, use method
IsMergedCell of worksheet:
bool isMergedCell = worksheet.IsMergedCell(2, 1); // false bool isMergedCell = worksheet.IsMergedCell(2, 2); // true bool isMergedCell = worksheet.IsMergedCell(2, 3); // false
Rowspan & Colspan
A merged cell has two properties
ColSpan, what are used to determine how many cells are merged in each direction:
The B3 cell is a merged cell, its
rowspan is 4 and
colspan is 3.
By getting instance of the cell to get more information, to get
var rowspan = cell.GetRowspan(); // number of rowspan var colspan = cell.GetColspan(); // number of colspan
IsMergedCell is used to check whether a cell is merged cell:
var cell = worksheet.Cells["B3"]; bool isMergedCell = cell.IsMergedCell; // true
Find out merged cell from a range
ReoGrid provides a method called
GetMergedCellOfRange which is used to find merged cell from a specified range.
ReoGridCell output = worksheet.GetMergedCellOfRange(input);
Valid and invalid cells
Cells merged by other cell become invalid, an invalid cell cannot display data and styles. The below red range is a merged cell, except the first cell, other cells labeled
No are invalid cells, they can’t be selected and edited.
There is a method of worksheet named
IsValidCell that is used to check whether or a cell is valid.
sheet.IsValidCell(2, 2); // true sheet.IsValidCell(2, 3); // false
Check for whole merged cell
There is a method used to check and get a whole cell if part of one is given.
RangePosition outputRange = sheet.CheckMergedRange(inputRange);
Range to be merged may intersect with other merged cells, try to merge intersected range will cause
User code should handle this exception and cancel the user operation.
CheckIntersectedMergingRange used to check whether or not there is any a part of merged cell contained in specified range. This method is useful to avoid the above exception.
RangePosition outputRange = sheet.CheckIntersectedMergingRange(inputRange);
outputRange.IsEmpty is true, that means the
inputRange is safe. There is another method to do the same:
bool rs = sheet.HasIntersectedMergingRange(inputRange);
Demo file is located at Demo\CellAndRange\MergeCellsDemo.cs in the demo project.