要合并单元格范围,可以使用以下两种方式之一:
// 获取当前活动工作表
var sheet1 = reoGridControl.CurrentWorksheet;
// 方式1:调用工作表的合并方法
sheet1.MergeRange("B3:E5");
// 方式2:通过范围实例合并
var range = sheet1.Ranges["B3:E5"];
range.Merge();

// 取消合并指定范围
sheet1.UnmergeRange("B3:E5");
// 或者通过范围实例取消合并
var range = sheet1.Ranges["B3:E5"];
range.Unmerge();
合并与取消合并操作可以通过动作执行,这样允许撤销操作。
// 使用动作合并单元格范围
grid.DoAction(ReoGrid.MergeRangeAction("B3:E5"));
// 使用动作取消合并单元格范围
grid.DoAction(ReoGrid.UnmergeRangeAction("B3:E5"));
使用扩展版本时,可以执行脚本进行合并和取消合并操作:
var sheet1 = workbook.CurrentWorksheet;
sheet1.mergeRange(ReoGrid.Range("B3:E5")); // 合并范围
sheet1.unmergeRange(ReoGrid.Range("B3:E5")); // 取消合并范围
var sheet1 = workbook.CurrentWorksheet;
sheet1.mergeRange(grid.selection); // 合并选中范围
sheet1.unmergeRange(grid.selection); // 取消合并选中范围
UnmergeRange方法会查找并取消合并指定范围内的所有已合并单元格。例如,下图中如果传入红色范围作为参数,则已合并的单元格A、B和C都会被取消合并。

只有合并范围左上角的单元格才是合并单元格。除了左上角单元格外,合并到范围内的其他单元格都会变为无效。

要检查单元格是否合并,使用工作表的IsMergedCell方法:
var isMergedCell = sheet1.IsMergedCell(2, 1); // false
isMergedCell = sheet1.IsMergedCell(2, 2); // true
isMergedCell = sheet1.IsMergedCell(2, 3); // false
合并单元格有两个属性RowSpan和ColSpan,用于确定每个方向合并了多少个单元格:

B3单元格是一个合并单元格,它的rowspan为4,colspan为3。
通过获取单元格实例可以获取更多信息,获取rowspan和colspan:
var rowspan = cell.GetRowspan(); // 行跨度数量
var colspan = cell.GetColspan(); // 列跨度数量
属性IsMergedCell用于检查单元格是否是合并单元格:
var cell = sheet1.Cells["B3"];
var isMergedCell = cell.IsMergedCell; // true
ReoGrid提供了GetMergedCellOfRange方法,用于从指定范围中查找合并单元格。

var outputCell = sheet1.GetMergedCellOfRange(inputRange);
被其他单元格合并的单元格会变为无效,无效单元格不能显示数据和样式。下图中红色范围是一个合并单元格,除了第一个单元格外,标记为"No"的其他单元格都是无效单元格,它们不能被选中和编辑。

工作表有一个名为IsValidCell的方法,用于检查单元格是否有效。
sheet1.IsValidCell(2, 2); // true
sheet1.IsValidCell(2, 3); // false
有一个方法可以检查并获取完整的合并单元格,如果给定的是单元格的一部分。

var outputRange = sheet1.CheckMergedRange(inputRange);
要合并的范围可能会与其他合并单元格交叉,尝试合并交叉范围会导致RangeIntersectionException。

用户代码应该处理这个异常并取消用户操作。

方法CheckIntersectedMergingRange用于检查指定范围内是否包含任何合并单元格的部分。这个方法可以避免上述异常。
var outputRange = sheet1.CheckIntersectedMergingRange(inputRange);
如果outputRange.IsEmpty为true,表示inputRange是安全的。还有另一个方法可以实现相同功能:
var hasIntersection = sheet1.HasIntersectedMergingRange(inputRange);