行列の固定を利用すると常に指定した行または列を表示させることができます。固定した行列以外の行と列はスクロールできます。
行列を固定するためには、ワークシートのメソッド FreezeToCell
を利用します。関数のパラメータは、文字列のアドレス、CelPosition
型または int の行列ポジションのいずれかです。
var sheet = grid.CurrentWorksheet; sheet.FreezeToCell("C5");
固定する位置を設定
ReoGrid では、Excelと同様に左上の行列を固定できるほか、右、右下、下にも固定できます。FreezeToCell
の二つ目のパラメータに FreezeArea
列挙体の値を指定します。
最後の行(Bottom)を固定するサンプルは以下の通りです。
統計帳票の最後の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 では左上の固定のみしか反映されません。