PowerTools SPREAD for Windows Forms 8.0J
セルの自動マージ

SPREADでは、内容が同じとみなされる複数列または複数行のセルが自動的にマージされるように設定できます。これにより、コントロールでは、同じ内容を持つセルが自動的に統合されます。この機能は、データベースと連結する場合などに便利です。下図では、同一のデータを持つセルどうしがマージされています。

セルのマージ

セル結合と異なり、マージは自動的に実行される機能です。 コントロールに対し、セルの自動マージを行う行と列を指定すると、この行および列内で同じ内容を持つすべてのセルが自動的に統合されます。

結合セルについては、「セルの結合」を参照してください。

マージの処理方法は、MergePolicy列挙体を使用して設定します。

MergePolicy列挙体の値 説明
Always マージしない。行または列内のセルはマージされません。
None 常にマージ。行または列内のセルは、同じ値を持つ場合に常にマージされます。
Restricted 制限付きでマージ。行または列内のセルは、同じ値を持ち、しかも直前の行または列のセルも同じ値を持つ場合に限りマージされます。

たとえば、セル A1:A8 の値が {a; a; b; b; b; b; c; c} であり、セル B1:B8 の値が {1; 1; 1; 1; 2; 2; 2; 2} であるとします。 列 B のマージ ポリシーが「Always」の場合、列 B 内のセルは、B1:B4、B5:B8 の2つのブロックにマージされます。 しかし、列 B のマージ ポリシーが「Restricted」の場合は、列 B 内のセルは B1:B2、B3:B4、B5:B6、B7:B8 の4つのブロックにマージされます。

指定の行または列内のセルが自動マージされるように設定することも、左隣(列)のセルまたは上隣(行)のセルがマージされたときにだけセルがマージされるように設定することもできます。通常、隣接する複数の行または列に対してマージポリシーを設定する場合は、最初の行または列には「Always」を、残りの行または列には「Restricted」を設定します。

マージされたセルのプロパティとデータ

マージされたセルには、マージ範囲内の左上のセルのプロパティが適用されます。 たとえば、左上のマージ セルの背景色が青であれば、このセルとマージされた全セルには同じ背景色が表示されます。

マージされた各セルのデータは失われるのではなく、マージによって非表示になるだけです。マージを解除すると、マージされていた個々のセルのデータが再表示されます。別のセルとマージされているセルも、編集が可能です。セルをダブルクリックして編集モードに切り替えると、このセルのデータが表示され、編集できる状態になります。編集モードを終了したとき、このセルの内容が、それまでマージされていた他のセルの内容と同じでなくなれば、このセルはマージ表示されません。

セル型が違っても、内容が同じセルであればマージされます。たとえば、「01/31/02」という内容の日付時刻型セルがあり、隣接するテキスト型セルが同じ内容であるとします。これらのセルが含まれる列でマージを有効にすると、これらのセルはマージされます。セルのデータが変更されたり、マージが解除された後は、各セルはそれぞれのデータ型とデータを維持します。

設定方法

SheetViewクラスのSetColumnMergeメソッドで列内のセルのマージを、SetRowMergeメソッドで行内のセルのマージを設定します。

サンプルコード

次のサンプル コードは、すべての行および列に対し、行と列のマージ ポリシーを設定します。

C#
コードのコピー
fpSpread1.Sheets[0].SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always);
fpSpread1.Sheets[0].SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always);
Visual Basic
コードのコピー
FpSpread1.Sheets(0).SetRowMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always)
FpSpread1.Sheets(0).SetColumnMerge(-1, FarPoint.Win.Spread.Model.MergePolicy.Always)
関連トピック

 

 


© 2004-2015, GrapeCity inc. All rights reserved.