ワークブック

ワークブック(Workbook)は複数のワークシート(Worksheet)を格納するためのオブジェクトです。ReoGridコンポーネント自身がワークブックの役割をしています。 328

画面に表示する ReoGrid のコンポーネントは、以下のUI要素を含んでいます。 ja54

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();

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