Merge and Unmerge
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:
worksheet.DoAction(new MergeRangeAction("B3:E5"));
To unmerge range by action:
worksheet.DoAction(new UnmergeRangeAction("B3:E5"));
Run Script
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);
Remark
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.
Merged Cells
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 RowSpan
and 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 rowspan
and colspan
:
var rowspan = cell.GetRowspan(); // number of rowspan
var colspan = cell.GetColspan(); // number of colspan
Property 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);
RangeIntersectionException
Range to be merged may intersect with other merged cells, try to merge intersected range will cause RangeIntersectionException
.
User code should handle this exception and cancel the user operation.
Method 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);
If outputRange.IsEmpty
is true, that means the inputRange
is safe. There is another method to do the same:
bool rs = sheet.HasIntersectedMergingRange(inputRange);