MESCIUS SPREAD for ASP.NET 10.0J
セルの自動マージ

SPREAD では、定義したポリシーに基づき、内容が同じとみなされる複数列または複数行のセルが自動的にマージされるように設定できます。これにより、同じ内容をもつセルが自動的に結合されます。 この機能は、たとえばデータベースに連結する場合などに便利です。

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

マージポリシー

マージポリシーの設定にはMergePolicy 列挙体を使用します。設定値は以下のとおりです。

MargePolicy 列挙体の値 説明
None セルはマージされません。
Always 同じ値を持つ場合に常に自動的にマージされます。
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」を設定します。

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

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

セルのマージによってデータが失われるわけではありません。マージによってデータは非表示に設定されますが、マージを解除することによって各セルのデータは再び表示されます。マージ範囲の左上のセルを編集することができます。編集を終え、そのセルの内容がマージ範囲の他のセルと異なる場合、SPREADの更新後にマージが解除されます。SPREADが更新されるまでの間は、マージの状態は変更されません。

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

設定方法

行のマージポリシーは、SheetView クラスSetRowMerge メソッドを使用し、列のマージポリシーは、SetColumnMerge メソッドを使用します。

また、シートモデル(Axis モデル)を使用する場合は、ISheetAxisModel インタフェースSetMergePolicy メソッドで実装します。

サンプルコード

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

FpSpread1.Sheets[0].SetRowMerge(-1, FarPoint.Web.Spread.Model.MergePolicy.Always);
FpSpread1.Sheets[0].SetColumnMerge(-1, FarPoint.Web.Spread.Model.MergePolicy.Always);
FpSpread1.Sheets(0).SetRowMerge(-1, FarPoint.Web.Spread.Model.MergePolicy.Always)
FpSpread1.Sheets(0).SetColumnMerge(-1, FarPoint.Web.Spread.Model.MergePolicy.Always)        
関連トピック

 

 


© MESCIUS inc. All rights reserved.