パッケージは unvell.ReoGrid.One.Avalonia、名前空間は unvell.ReoGrid.Avalonia です。
Windows / Linux / macOS で動作する唯一の GUI パッケージです。
導入とサンプルは Avalonia で始める を参照してください。
依存関係
このパッケージだけは Avalonia(11.3.17)への PackageReference を持ちます。
コントロールは利用側アプリと同じ Avalonia にバインドする必要があるためです。
他の 3 パッケージ(One / One.Wpf / One.Core)は依存パッケージを持ちません。
対象フレームワークは net10.0 です(-windows は付きません)。
構造
ReoGridControl は Avalonia.Controls.Control の派生です。描画は
AvaloniaGraphics(DrawingContext ベース)で行います。
WPF と同じく DIP が論理ピクセルと一致するため、DPI 変換は不要です。
メンバー
| 分類 | メンバー |
|---|---|
| ワークブック | Workbook ActiveWorksheet SetWorksheet LoadWorkbook NewWorkbook LoadJson |
| 選択 | Selection ActiveCell SelectionChanged |
| 編集 | BeginEdit CancelEdit IsEditing SetActiveCellInput |
| 表示 | Zoom ZoomChanged SetFreeze |
| 書式 | MutateSelectionStyle SetSelectionCellType ほか |
| 履歴 | Undo Redo CanUndo CanRedo |
| イベント | WorkbookChanged ActiveSheetChanged ContextMenuRequested CellButtonClicked HistoryChanged |
RenderTo(context, width, height) で任意の DrawingContext へ描画できます。
using unvell.ReoGrid.Avalonia;
using unvell.ReoGrid.Core;
grid.NewWorkbook();
Worksheet ws = grid.ActiveWorksheet;
ws.SetText(0, 0, "支店");
ws.SetFormula(1, 3, "B2+C2");
grid.SelectionChanged += (_, _) =>
Console.WriteLine($"{grid.ActiveCell.Row},{grid.ActiveCell.Col}");
grid.CellButtonClicked += (_, e) =>
Console.WriteLine($"ボタンが押された: {e.Cell.Row},{e.Cell.Col}");
// 履歴・ズーム・枠固定はコントロール側の API(3 プラットフォーム共通)
grid.SetFreeze(rows: 1, cols: 1);
grid.Zoom = 1.25;
if (grid.CanUndo) grid.Undo();
他プラットフォームとの差
| WinForms / WPF | Avalonia | |
|---|---|---|
| 動作環境 | Windows のみ | Windows / Linux / macOS |
| 依存 | なし | Avalonia |
| 印刷 | CreatePrintDocument()(WinForms)/ Print()(WPF) | 未対応(PDF 出力を使う) |
差は印刷だけです。履歴・編集・書式・クリップボード・アウトラインの API は 3 プラットフォームで同じです。
印刷が無いのは Avalonia に共通の印刷 API が無いためです。用紙への出力が必要な場合は PDF 出力 を使ってください。PDF は日本語フォントを埋め込むため、 Linux 上でもフォント構成に依存せず出力できます。
フォント
Linux では日本語フォントがインストールされていないと画面表示で文字が出ないことがあります。 Avalonia のフォント設定でフォールバックを指定してください。
PDF 出力はこの影響を受けません(フォントが DLL に埋め込まれているため)。