ReoGrid入門
この文書は初めてReoGridを利用する際の参考として紹介するものです。ReoGrid のインストール方法は、「インストール」をご参照ください。
コンポーネントの概要
ReoGrid はスプレッドシート表計算コンポーネントです。下図は ReoGrid を Windows Form に配置した際の表示です。
ReoGrid は、Excel と同じワークブック、ワークシート、シートタブコントロールとスクロールバーがあります。また、アドレステキストボックスと計算式テキストボックスは ReoGrid エディタの中に含まれています。ReoGrid エディタは MIT ライセンスのオーブンソースで公開していますので、ご自由にご利用ください。
ReoGrid を利用する際によく使われるオブジェクトは以下の通りです。
- ワークブック(Workbook)
- ワークシート(Worksheet)
- セル(Cell)
- 範囲(Range)
- 行列ヘッダー(Row Header & Column Header)
- アクション(Action)(元に戻す、やり直す、他の範囲に流用)
ワークブックとワークシートの概要
ReoGrid コントロール自身がワークブックの役をします。一つのワークブックに複数のワークシートが存在します。特定のワークシートにアクセスしたい場合、そのワークシートの名前、または数字のインデックスで Worksheets
配列からワークシートのインスタンスを取得します。
コントロールかワークブックのAPIを利用したい場合、コントロールのメソッドを直接呼び出します。
reoGridControl.fun();
ワークシートのAPIを利用したい場合、ワークブックの Worksheets
プロパティよりワークシートのインスタンスを取得します。または CurrentWorksheet
プロパティから現在のアクティブ化したワークシートを取得します。そのワークシートのメソッドを呼び出します。
var worksheet = reoGridControl.CurrentWorksheet;
worksheet.fun();
ワークブックに関して詳しくは、「ワークブック(Workbook)」をご参照ください。
ワークシートにアクセスする
ReoGridを利用する際、最も頻繁に行う操作は、ワークシートにデータを入れる、またはワークシートからデータを取得することです。ReoGrid はワークシートとやり取りするためのメソッドを数多く提供しています。これらのメソッドを利用することで、ワークシートのデータ、計算式、セルのスタイル、罫線、アウトラインなどにアクセスできます。また、ワークシートのメソッドを呼び出すと、範囲の結合、アウトラインの追加、範囲の選択、セルのステータスなどの操作を行うことができます。
データにアクセスする
セルのデータは、セルの文字として表示、またはセルの計算式の値として利用されます。
セルに文字や値の数字を設定するサンプルコードです。
// まずコントロールからワークシートのインスタンスを取得する
var worksheet = grid.CurrentWorksheet;
セルにアクセルする際、セルの位置を指定する必要があるので、アドレスの文字列、または数字の位置(行、列)をReoGridに渡します。そして、データにアクセスするには3つの方法があります。
方法1:ワークシートのインデックスプロパティを利用する
worksheet["A1"] = "hello world";
worksheet[2, 1] = 10;
方法2:ワークシートのSetCellDataとGetCellDataメソッドを呼び出す
sheet.SetCellData(new CellPosition(2, 1), "hello world");
方法3:セルのインスタンスを介してデータにアクセスする
// セルのインスタンスを取得する
var cell = worksheet.Cells["A1"];
cell.Data = "hello world";
スタイルにアクセスする
ReoGridのセルはそれぞれのスタイルを持つことができます。スタイルはそのセルの文字の色、フォント、大きさ、文字の表示位置、改行方式などの情報を持ちます。
通常は複数のセルが同一のスタイルを持ちます。たとえば金額の列なら、その列の全てのセルが同じフォントになります。ReoGridでは、メモリの節約と動作の高速性を向上するため、セル毎にスタイルを設定するのではなく、範囲に対して設定することをお勧めします。
範囲のスタイル設定には、2つの方法があります。
方法1:ワークシートのSetRangeStylesとGetRangeStylesメソッドを呼び出す
sheet.SetRangeStyles("B1:E5", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.FillColor,
BackColor = Color.SkyBlue,
});
WorksheetRangeStyle
クラスはスタイルのオブジェクトです。このクラスは文字の色、フォント、大きさ、表示位置、背景色などの情報を持ちます。一度の設定で、いずれのスタイル情報を指定するのか、flagプロパティの設定が必要です。
方法2:範囲のインスタンスを介してスタイルにアクセスする
var range = worksheet.Ranges["B1:E5"];
range.BackColor = Color.SkyBlue;
ワークシートに関して詳しくは、「ワークシート(Worksheet)」をご参照ください。
様々な入出力機能を利用する
ReoGrid は、様々な入出力機能を搭載しています。Excel ファイル、CSV ファイルのインポート、エクスポートができます。ReoGrid 独自のファイルフォーマット RGF は、ReoGrid のオリジナル機能の内容をサポートしているもので、アプリケーションのテンプレートフォーマットとして最適化されています。ReoGrid の入出力機能を活用し、様々なファイルや帳票を作成したり、出力したり、加工したりすることが可能になります。
Excelファイルの読み込みと出力
Excelファイルを読み込みするには、ワークブックの Load
メソッドを利用します。
reoGridControl.Load("MyPath\\MyExcelFile.xlsx");
Excelファイルを出力するには、ワークブックの Save
メソッドを利用します。
reoGridControl.Save("MyPath\\MyExcelFile.xlsx");
Excelフォーマットについて詳しくは、「Excelフォーマット」をご覧ください。
CSVファイルの読み込みと出力
CSVファイルはマルチシートに対応していないため、読み込みするにはワークブックではなくワークシートを利用します。まず CSV のデータを書き込みたいワークシート、または CSV データの出力元ワークシートのインスタンスを取得する必要があります。
var worksheet = reoGridControl.CurrentWorksheet;
CSVファイルを読み込みするには、ワークシートの Load
メソッドを利用します。
worksheet.Load("MyPath\\MyCsvFile.csv");
CSVファイルを出力するには、ワークシートの Save
メソッドを利用します。
worksheet.Save("MyPath\\MyCsvFile.csv");
CSVフォーマットについて詳しくは、「CSVフォーマット」をご覧ください。
RGFファイルの読み込みと出力
RGFファイルは ReoGrid 独自の形式です。特に ReoGrid 特有の機能に最適化されています。RGFファイルを読み込みするには、ワークシートの Load
メソッドを利用します。
worksheet.Load("MyPath\\MyTemplate.rgf");
Excelファイルを出力するには、ワークシートの Save
メソッドを利用します。
worksheet.Save("MyPath\\MyTemplate.rgf");
RGFフォーマットについて詳しくは、「RGFフォーマット」をご覧ください。
ワークブック、ワークシート、セルなどのカスタマイズ設定
ReoGridでは、ワークブック、ワークシート、セルなどに対して、アプリケーションの要件に合わせたカスタマイズ設定ができます。例えば、編集できないセルと編集できるセルに設定したり、入力の値を数字のみに設定したり、スクロールバーを非表示に設定したり、ワークシートの数を固定させたりすることができます。
Settingsを指定しワークブックとワークシートをカスタマイズする
ワークブックとワークシートには、SetSettings
メソッドがあります。このメソッドに設定の値を渡すと、特定のカスタマイズ設定を行うことができます。例えばコントロールの下側にあるワークシートタブコントロールを非表示に設定します。
reoGridControl.SetSettings(unvell.ReoGrid.WorkbookSettings.View_ShowSheetTabControl, false);
結果は以下の通りです。
特定のワークシートのヘッダーを非表示に設定します。
var worksheet = reoGridControl.Worksheets[0];
worksheet.CurrentWorksheet.SetSettings(WorksheetSettings.View_ShowHeaders, false);
結果はヘッダーのないスプレッドシートが表示されます。
イベント(Event)を利用して特定の操作を禁止する
デフォルトでは、ユーザーがセル上でダブルクリックするとそのセルを編集することができます。特定のセルを編集させないようにするには、ワークシートの BeforeCellEdit
イベントを利用して、そのイベントのプロパティ IsCancelled
を true
に設定します。例えば、セルB1の編集動作を禁止します。
worksheet.BeforeCellEdit += (s, e) => e.IsCancelled = e.Cell.Address == "B1";
Action機能を利用して、Undo、Redo、Repeatを実現する
ReoGridは、ワークシートのプロパティやメソッドの呼び出しなどによって制御や操作を行う方法以外に、Action機能を利用して操作を行う方法も提供しています。
Actionは、一つ一つの操作をオブジェクトとして実装したクラスです。操作のオブジェクトをReoGridに渡すと、その操作を行うことができ、さらに操作を元に戻す(Undo)、やり直す(Redo)、または他の範囲での流用(Repeat)もできます。
アプリケーションでExcelのような表計算スプレッドシートを実装しエンドユーザーに提供する場合、ReoGridのAction機能を利用することをお勧めします。Action機能を利用するためのサンプルコードは以下の通りです。
- 利用するNamespaceを宣言します。
using unvell.ReoGrid.Actions;
DoAction
メソッドを呼び出して、操作のオブジェクトを渡す(操作のオブジェクトは、XXXXActionように命名されています)grid.DoAction(grid.CurrentWorksheet, new xxxxAction(...));
- 最後の操作に対して、元に戻す場合Undoを、やり直す場合Redoを呼び出します。
grid.Undo(); grid.Redo();
または、最後の操作をほかの範囲に適用する場合、RepeatLastActionメソッドを利用します。RepeatLastActionは、ExcelのF4と同様の動作を行います。grid.RepeatLastAction(new RangePosition(2, 3, 5, 5));
ReoGridEditorを活用する
ReoGridEditor は ReoGrid をベースとした表計算スプレッドシートエディタです。ReoGridEditor は、ReoGrid 用テンプレートファイルの作成に最適化されています。特に Excel にはない ReoGrid の独自機能に対応するほか、ReoGrid が認識するすべてのファイルフォーマット(Excel、RGF、CSV)にも対応しています。ReoGridEditor の実行ファイルは ReoGridのダウンロードパッケージで配布されています。ソースコードも公開していますので、アプリケーションに特化して活用することができます。
ReoGridEditor について詳しくは、「ReoGridEditor」をご参照ください。