改ページの計算は UI に依存しないエンジン(unvell.ReoGrid.Core.Printing)が行い、
PDF・WinForms・WPF がこれを共有します。どの出力先でも同じ結果になります。
ページ設定
using unvell.ReoGrid.Core.Printing;
ws.PrintSettings = new PrintSettings
{
Paper = PaperKind.A4,
Orientation = PageOrientation.Portrait,
MarginLeft = 54, // ポイント(72 pt = 1 インチ)
MarginRight = 54,
MarginTop = 54,
MarginBottom = 54,
PrintArea = RangePosition.Parse("A1:H60"),
Scale = 1.0,
CenterHorizontally = true,
Order = PageOrder.DownThenOver,
ShowGridLines = true,
ShowHeaders = false,
};
用紙サイズ
PaperKind は A5 / A4 / A3 / B5 / B4 / Letter / Legal /
Tabloid / Executive / Custom です。
Custom の場合は CustomWidthPt / CustomHeightPt をポイントで指定します。
倍率とページ合わせ
ws.PrintSettings = new PrintSettings
{
FitToPagesWide = 1, // 横 1 ページに収める
FitToPagesTall = null, // 縦は成り行き
};
bool fit = ws.PrintSettings.IsFitToPage;
Scale は 10%〜400%(MinScale / MaxScale)。FitToPagesWide /
FitToPagesTall のいずれかを指定すると、Scale より優先されます。
画面の表示倍率(control.Zoom)は印刷に影響しません。
改ページの規則
- 行・列は分割されません。 Excel と同じく、収まらない行は次のページへ送られます
- 非表示の行・列は幅・高さ 0 として扱われます
PageOrderはページを送る順序です(DownThenOver= 下方向優先、OverThenDown= 右方向優先)
ページ数を先に知る
// ページ数だけ知りたい場合(描画せずに計算できる)
PrintLayout layout = Paginator.Paginate(ws, ws.PrintSettings);
Console.WriteLine($"{layout.Pages.Count} ページ");
描画を伴わないため、プレビュー UI やバッチ処理で使えます。
出力先ごとの呼び出し
| 出力先 | 呼び出し |
|---|---|
PdfExporter.Export(ws, path, settings) | |
| WinForms | control.CreatePrintDocument(settings) → PrintDocument.Print() |
| WPF | control.Print(settings) |
| Avalonia | 未対応(PDF 出力を使う) |
WinForms 版は PrintDocument を返すため、標準の印刷ダイアログやプレビューにそのまま渡せます。
保存
PrintSettings は XLSX の <pageSetup> として往復します。Excel で開いても
同じ用紙・向き・余白になります。
未対応
- 印刷タイトル(各ページで先頭行・先頭列を繰り返す)
- ヘッダー・フッター(ページ番号など)
- 印刷範囲のうち特定ページだけを出力する指定
- シートごとの印刷設定の永続化(reogrid-json 側)
ウィンドウ枠の固定は画面表示のためのもので、印刷には影響しません (ウィンドウ枠の固定)。