ワークブック
ワークブック(Workbook)は複数のワークシート(Worksheet)を格納するためのオブジェクトです。ReoGridコンポーネント自身がワークブックの役割をしています。
画面に表示する ReoGrid のコンポーネントは、以下のUI要素を含んでいます。
UI要素は設定によって隠すことができます。例えば「シートタブ」を隠すと、ユーザーが新しいワークシートを追加することができなくなります。
コンポーネントがワークブック
ReoGrid を Windows Formに追加した場合、そのインスタンスがワークブックです。つまり、「ReoGridコンポーネント=ワークブック」です。
var workbook = reoGridControl1;
ReoGridは画面に表示するワークブックを提供するほか、UI要素を一切持たず、メモリ上のみで動作するワークブックも提供しています。このようなワークブックはExcelのデータ処理や、Webアプリケーションでの利用などに便利です。詳しくは、「メモリワークブック」をご覧ください。
ワークブックにあるワークシートにアクセス
一つのワークブックに複数のワークシートを含むことができます。画面に表示するワークブックには、必ず「現在表示中」のワークシートが存在します。そのワークシートを取得するには、ワークブックのプロパティ「CurrentWorksheet」を利用します。
// 現在表示中のワークシートインスタンスを取得する
var worksheet = reoGridControl.CurrentWorksheet;
現在表示中以外のワークシートを取得するには、ワークブックの「Worksheets」プロパティを利用します。このプロパティに数字のインデックスまたは文字列のシート名を渡すと、ワークシートのインスタンスを取得できます。
var sheet1 = reoGridControl.Worksheets[0];
var sheet2 = reoGridControl.Worksheets["Sheet2"];
現在表示中のワークシートを変えることができます。プロパティ「CurrentWorksheet」にワークシートのインスタンスを渡すと、そのワークシートが現在表示中のワークシートになります。ただし、渡すワークシートは必ずそのワークブックにあるワークシートでなければなりません。また、nullを渡すこともできません。
var anotherWorksheet = reoGridControl.Worksheets["sheet2"];
if (anotherWorksheet != null)
{
reoGridControl.CurrentWorksheet = anotherWorksheet;
}
シートタブ
コンポーネントの下側に表示するシートタブに対してカスタマイズ設定ができます。詳しくは、シートタブの制御をご覧ください。
シートタブを非表示
マルチシートを利用しない場合、シートタブを非表示にすることが可能です。
reoGridControl.SetSettings(WorkbookSettings.View_ShowSheetTabControl, false);
ワークシートの管理
ワークシートの取得
ワークブックよりワークシートを取得するには上述のようにプロパティ「CurrentWorksheet」と「Worksheets」を利用すれば取得できます。
ワークシートの列挙
Worksheetsプロパティを利用してすべてのワークシートを列挙できます。
foreach (var sheet in reoGridControl.Worksheets)
{
MessageBox.Show(sheet.Name);
}
新しいワークシートの作成
新しいワークシートを作成するには、ワークブックのメソッド「NewWorksheet」を利用します。このメソッドは、新しいワークシートを作成してワークブックの最後に追加します。
// 新しいワークシートを作成
var sheet = reoGridControl.NewWorksheet();
// または名前を指定して作成
var sheet = reoGridControl.NewWorksheet("sheet2");
渡す名前を省略した場合、ReoGridは自動的にワークシートに存在しない「Sheet+番号」の名前を付与します。例えば、Sheet1 と Sheet2 が存在する場合、新しいワークシートの名前は Sheet3 になります。
指定した名前がワークブックに既に存在した場合、エクセプションが発生します。
新しいワークシートをワークブックに追加せず作成
上記のメソッドNewWorksheetは、新しいワークシートを作成してからワークブックの最後に追加します。作成した新しいワークシートをすぐにワークブックに追加したくない場合、CreateWorksheetメソッドを利用します。
var sheet = reoGridControl.CreateWorksheet();
// または
var sheet = reoGridControl.CreateWorksheet("sheet2");
CreateWorksheetで作成したワークシートのインスタンスを最終的にワークブックに追加する必要があります。その場合AddWorksheetまたはInsertWorksheetを利用します。
ワークシートの追加および挿入
ワークシートのインスタンスをワークブックに追加するには、AddWorksheet、InsertWorksheetまたは Worksheets を利用します。同じインスタンスを一回のみ追加することができます。また追加したワークシートの名前がそのワークブックにすでに存在する場合、エクセプションが発生します。
// メソッドの呼び出しでワークシートを追加
reoGridControl.AddWorksheet(sheet);
reoGridControl.InsertWorksheet(1, sheet);
// Worksheets コレクションを利用してワークシートを追加
reoGridControl.Worksheets.Add(sheet);
reoGridControl.Worksheets.Insert(1, sheet);
ワークシートのインデックス(位置)の検索
名前を指定して、その名前のワークシートがワークブックのどこにあるか、メソッド GetWorksheetIndex を利用して探すことができます。
var index = reoGridControl.GetWorksheetIndex("sheet2");
返却値はゼロからのインデックス値です。例えばワークブックの1番目にあるワークシートのインスタンスは 0 となります。
ワークシートのコピー
CopyWorksheet メソッドを利用して、一つのワークシートを丸ごとコピーすることができます。
var sheet2 = reoGridControl.CopyWorksheet(0, 1);
var sheet3 = reoGridControl.CopyWorksheet("sheet2", 2);
名前の指定を省略した場合、ReoGridは自動的に「Sheet+番号」の名前を付与します。
ワークシートの移動
ワークシートを当該ワークシートのワークブックの中で移動することができます。例えばワークブックの1番目から4番目に移動することができます。その場合以下のように、MoveWorksheetメソッドを利用します。
reoGridControl.MoveWorksheet(0, 3);
指定したインデックスからワークシートが見つからない場合、エクセプションが発生します。
ワークシートの削除
ワークシートをワークブックから削除する場合、RemoveWorksheetを利用します。
reoGridControl.RemoveWorksheet(0);
// または名前を指定
reoGridControl.RemoveWorksheet("sheet2");
ワークシートのイベント
ユーザーが画面上でシートタブを利用して、ワークシートを作成したり移動したりした場合、ワークブックの以下のイベントが呼び出されます。
- WorksheetCreated - ワークシートが作成された場合
- WorksheetInserted - ワークシートが追加または挿入された場合
- WorksheetRemoved - ワークシートが削除された場合
- BeforeWorksheetNameChange - ワークシートの名前が変更される前
- WorksheetNameChanged - ワークシートの名前が変更された後
ワークブックをリセット
ワークブックをリセットすると、ワークブックが元に戻ります。そのワークブックにあるすべてのワークシートが削除され、新たに空白のワークシートが追加されます。ワークブックをリセットするには、Resetメソッドを利用します。
workbook.Reset();