Workbook はワークシートの集合と、ブック全体にかかる情報(定義名など)を保持します。 コントロールに依存しないため、画面のないコードからそのまま使えます。

名前空間は unvell.ReoGrid.Core です。

生成とシートの追加

using unvell.ReoGrid.Core;

var wb = new Workbook();
var sheet = wb.AddWorksheet("Sheet1");

// 行数・列数は省略すると Excel のフル寸法。スパース格納なのでコストはかからない。
var small = wb.AddWorksheet("Log", rows: 5000, cols: 32);

new Workbook() はシートを 1 枚も持たない状態で始まります。少なくとも 1 枚追加してください (コントロール側の new ReoGridControl()Sheet1 を作った状態で始まります)。

rows / cols を明示的に小さくするのは、そのシートの論理的な上限を狭めたいときだけです。 性能のために小さくする必要はありません。V5 のストレージは実在するセルにしかコストを払わないため、 フル寸法のシートを 100 枚作っても空であればほぼゼロです。

シートを取得する

Worksheet first = wb[0];                    // 位置で取得
Worksheet? byName = wb["Sheet1"];           // 名前で取得(見つからなければ null)
Worksheet? resolved = wb.ResolveSheet("Sheet1");

int count = wb.Count;
IReadOnlyList<Worksheet> all = wb.Worksheets;

名前による取得は大文字小文字を区別しません。wb["名前"]ResolveSheet(...) は同じもので、 どちらも見つからなければ null を返します。

アクティブシートと削除

wb.ActiveSheetIndex = 1;
Worksheet? active = wb.ActiveWorksheet;

wb.Remove(ws);      // 削除。数式の参照は #REF! に治癒される

ActiveSheetIndexモデル側が持つ状態で、保存形式にも載ります。コントロールに表示中の シートは control.ActiveWorksheet であり、control.SetWorksheet(ws) で切り替えると こちらも追従します。

シートを削除・リネームすると、他シートからの参照(Sheet2!A1 のようなクロスシート参照や 定義名)は自動的に追従します。削除された対象を指していた数式は #REF! になります。

寸法の上限

int maxRows = Workbook.MaxRows;       // 1,048,576
int maxCols = Workbook.MaxColumns;    //     16,384

Excel と同じ上限です。AddWorksheet の既定値でもあります。

主なメンバー

メンバー内容
AddWorksheet(name, rows, cols)シートを追加して返す
Worksheets / Countシート一覧と枚数
this[int] / this[string]位置・名前で取得(名前は見つからなければ null
ResolveSheet(name)this[string] と同じ
Remove(ws)シートを削除
ActiveSheetIndex / ActiveWorksheetアクティブシート
Names定義名のレジストリ(定義名
DefineName / GetName / RemoveName / GetNames定義名の操作
RecalcCrossSheetFormulas()クロスシート参照を含む数式を再計算
MaxRows / MaxColumns寸法の上限(定数)

次に読む

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