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

要取消合并一个范围:
worksheet.UnmergeRange("B3:E5");
// 或者:
var range = worksheet.Ranges["B3:E5"];
range.Unmerge();
撤销、重做和重复
合并和取消合并操作可以通过操作来执行,这使得操作可以被撤销。
使用操作合并范围:
worksheet.DoAction(new MergeRangeAction("B3:E5"));
使用操作取消合并范围:
worksheet.DoAction(new UnmergeRangeAction("B3:E5"));
运行脚本
使用扩展版时,可以执行脚本。通过脚本进行合并和取消合并:
var sheet = workbook.CurrentWorksheet;
sheet.mergeRange(new Range("B3:E5"));
sheet.unmergeRange(new Range("B3:E5"));
示例:合并或取消合并当前选中的范围
var sheet = workbook.CurrentWorksheet;
sheet.mergeRange(grid.selection);
sheet.unmergeRange(grid.selection);
说明
UnmergeRange 方法会查找并取消合并指定范围内的所有合并单元格。例如,下图中的合并单元格 A、B 和 C 如果红色范围作为参数传入,都将被取消合并。

合并单元格
检查合并单元格
只有合并范围的左上角单元格才是合并单元格。所有其他被合并到范围中的单元格变为无效。

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

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

ReoGridCell output = worksheet.GetMergedCellOfRange(input);
有效和无效单元格
被合并吸收的单元格变为无效。无效单元格无法显示数据或样式。在下面的示例中,红色范围是一个合并单元格。除第一个单元格外,所有标记为 No 的单元格都是无效的 — 它们无法被选中或编辑。

工作表提供了一个名为 IsValidCell 的方法来检查单元格是否有效:
sheet.IsValidCell(2, 2); // true
sheet.IsValidCell(2, 3); // false
检查完整的合并单元格
有一个方法可以在仅给出部分范围时检查并获取完整的合并单元格范围。

RangePosition outputRange = sheet.CheckMergedRange(inputRange);
RangeIntersectionException
要合并的范围可能与其他合并单元格交叉。尝试合并一个交叉范围将抛出 RangeIntersectionException。

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

CheckIntersectedMergingRange 方法检查合并单元格的任何部分是否包含在指定范围内。此方法对于避免上述异常非常有用。
RangePosition outputRange = sheet.CheckIntersectedMergingRange(inputRange);
如果 outputRange.IsEmpty 为 true,则 inputRange 可以安全合并。还有另一个方法执行相同的检查:
bool rs = sheet.HasIntersectedMergingRange(inputRange);