セルの結合と解除

範囲を結合するには、以下の2つの方法のいずれかを使用します:

// 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();

22_2

範囲の結合を解除するには:

worksheet.UnmergeRange("B3:E5");

// or:
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は、赤い範囲が引数として渡された場合にすべて結合解除されます。

9_2

結合セル

結合セルの確認

結合範囲の左上のセルのみが結合セルです。範囲に結合された他のすべてのセルは無効になります。

10

セルが結合セルかどうかを確認するには、ワークシートの IsMergedCell メソッドを使用します:

bool isMergedCell = worksheet.IsMergedCell(2, 1);      // false
bool isMergedCell = worksheet.IsMergedCell(2, 2);      // true
bool isMergedCell = worksheet.IsMergedCell(2, 3);      // false

行スパンと列スパン

結合セルには、各方向に結合されたセルの数を決定する RowSpanColSpan の2つのプロパティがあります:

11 (1)

B3セルは rowspan が4、colspan が3の結合セルです。

セルインスタンスから rowspancolspan を取得するには:

var rowspan = cell.GetRowspan();   // number of rowspan
var colspan = cell.GetColspan();   // number of colspan

IsMergedCell プロパティは、セルが結合セルかどうかを確認するために使用します:

var cell = worksheet.Cells["B3"];
bool isMergedCell = cell.IsMergedCell;  // true

範囲から結合セルを見つける

ReoGridは、指定された範囲内の結合セルを見つけるための GetMergedCellOfRange メソッドを提供しています。

12 (1)

ReoGridCell output = worksheet.GetMergedCellOfRange(input);

有効なセルと無効なセル

結合によって吸収されたセルは無効になります。無効なセルはデータやスタイルを表示できません。以下の例では、赤い範囲が結合セルです。最初のセルを除き、No とラベル付けされた他のすべてのセルは無効であり、選択や編集ができません。

19 (1)

ワークシートは、セルが有効かどうかを確認するための IsValidCell メソッドを提供しています:

sheet.IsValidCell(2, 2);      // true
sheet.IsValidCell(2, 3);      // false

完全な結合セルの確認

一部分のみが指定された場合に、結合セル範囲全体を確認して取得するメソッドがあります。

56

RangePosition outputRange = sheet.CheckMergedRange(inputRange);

RangeIntersectionException

結合しようとする範囲が他の結合セルと交差している場合があります。交差する範囲を結合しようとすると、RangeIntersectionException がスローされます。

20 (2)

ユーザーコードはこの例外を処理し、ユーザー操作をキャンセルする必要があります。

21 (1)

CheckIntersectedMergingRange メソッドは、結合セルの一部が指定された範囲内に含まれているかどうかを確認します。このメソッドは上記の例外を回避するのに便利です。

RangePosition outputRange = sheet.CheckIntersectedMergingRange(inputRange);

outputRange.IsEmptytrue の場合、inputRange は安全に結合できます。同じ確認を行う別のメソッドもあります:

bool rs = sheet.HasIntersectedMergingRange(inputRange);

ページの内容は役に立ちましたか?