行列の固定

行列の固定を利用すると常に指定した行または列を表示させることができます。固定した行列以外の行と列はスクロールできます。 ja74

行列を固定するためには、ワークシートのメソッド FreezeToCell を利用します。関数のパラメータは、文字列のアドレス、CelPosition 型または int の行列ポジションのいずれかです。

var sheet = grid.CurrentWorksheet;
sheet.FreezeToCell("C5");

固定する位置を設定

ReoGrid では、Excelと同様に左上の行列を固定できるほか、右、右下、下にも固定できます。FreezeToCell の二つ目のパラメータに FreezeArea 列挙体の値を指定します。 416

最後の行(Bottom)を固定するサンプルは以下の通りです。 ja75

統計帳票の最後の6行を固定したため、総数が見やすくなりました。ソースコードは以下の通りです。

// ワークシート最後の空白行を削除、行数を106に設定
sheet.Rows = 106;

// 101行から下の行を固定
sheet.FreezeToCell(101, 0, FreezeArea.Bottom);

固定した行列の解除

固定した行列を解除するには、ワークシートの Unfreeze メソッドを利用します。

sheet.Unfreeze();

固定した行列を取得

固定した行列のポジションを取得するには、ワークシートのプロパティ FreezePos を利用します。

CellPosition pos = sheet.FreezePos;

また、ワークシートのどこに固定したかについての情報は、FreezeArea プロパティから取得します。

FreezeArea area = sheet.FreezeArea;

この area が FreezeArea.Bottom である場合、FreezePos ポジション以降の行がワークシートの下側に固定されています。

固定した行列があるかどうかを確認するだけの簡単なチェックは IsFrozen プロパティを利用します。

bool isFrozen = sheet.IsFrozen;

行列が固定された際のイベント

ワークシートの行列が固定された際に、ワークシートのイベント CellsFrozen が発生します。

// イベントを処理
sheet.CellsFrozen += Worksheet_CellsFrozen;

private void Worksheet_CellsFrozen(object sender, EventArgs e)
{
  // ワークシートを取得
 var worksheet = (Worksheet)sender;

  // メッセージを表示
  MessageBox.Show(string.Format("ワークシートが {0} に固定されました。 ",
    worksheet.FreezePos.ToAddress()));
}

固定した行列が解除された際のイベント

固定した行列が解除された際のイベントは CellsUnfrozen です。使い方は CellsFrozen イベントと同じです。

Excel インポート/エクスポート

Excel ファイルからスプレッドシートを読み込む場合、または Excel ファイルにスプレッドシートを書き出す場合、行列固定の設定も自動的にインポート/エクスポートされます。

ただし、Excel では左上にしか固定できませんので、それ以外の位置に固定しても Excel では左上の固定のみしか反映されません。


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