ページレイアウト
v1.4.0 から、すべてのワークシートがページングモデル(用紙サイズ・向き・余白・スケール)と、ドラッグ・挿入可能な改ページを備えた画面上の改ページプレビューを持ちます。これは PDFエクスポート(usePageBreaks: true)を駆動し、xlsx へ往復するため、ReoGrid と Excel で同じようにページ分割されます。
Note: ページレイアウトは Pro 版で利用可能です。
印刷設定
ページングモデルはワークシート上で読み書きします。
import { createReogrid } from '@reogrid/pro'
const grid = createReogrid({ workspace: '#app' })
const ws = grid.worksheet
// 部分更新をマージ — 触れていないフィールドは値を保持します
ws.setPrintSettings({
paperSize: 'A4',
orientation: 'landscape',
margins: { top: 15, right: 12, bottom: 15, left: 12 }, // mm
scale: 1, // 1 = 100%
})
const settings = ws.getPrintSettings()
console.log(settings.paperSize, settings.orientation)
PrintSettings
| フィールド | 型 | 既定値 | 説明 |
|---|---|---|---|
paperSize | 'A3'|'A4'|'A5'|'B4'|'B5'|'Letter'|'Legal'|'Tabloid'|'Executive' または { widthMm, heightMm } | 'A4' | 用紙サイズ名または mm 指定のカスタムサイズ。 |
orientation | 'portrait' | 'landscape' | 'portrait' | ページの向き。 |
margins | { top, right, bottom, left } | Excel 既定(左右 17.78 mm、上下 19.05 mm) | 余白(mm)。 |
scale | number | 1 | 内容のスケール係数。[0.1, 4] にクランプ。 |
pageOrder | 'downThenOver' | 'overThenDown' | 'downThenOver' | getPrintPageRanges でページを走査する順序。 |
ページヘッダーとフッター
v1.5.0 から、PrintSettings.headerFooter で用紙の余白部分にテキストを印刷できます — ページ番号、日付、シート名やファイル名など。Excel と同じ書式コードを使い、xlsx で往復します。
ws.setPrintSettings({
headerFooter: {
header: { center: '&"Meiryo"売上明細' },
footer: { right: 'ページ &P / &N', left: '&D' },
},
})
各帯は**左(left)・中央(center)・右(right)**のセクションを持ちます。帯は header と footer、加えて下記フラグで有効になる evenHeader / evenFooter、firstHeader / firstFooter があります。
書式コード
セクションのテキストは Excel と同じくコードをそのまま保持し、印刷時にページごとに展開されます。
| コード | 展開結果 |
|---|---|
&P | 現在のページ番号(&P+2 / &P-1 でオフセット) |
&N | 総ページ数 |
&D / &T | 日付/時刻 |
&F | ファイル名 |
&A | シート名 |
&Z | ファイルパス |
&& | リテラルの & |
装飾コード(&B、&12、&"Meiryo,Bold"、&KFF0000、&G)は認識した上で除去されます。PDF に埋め込まれるフォントは 1 ウェイトのため再現できず、そのまま文字として出力する方が問題が大きいためです。未知のコードはそのまま残すので、打ち間違いは黙って消えるのではなく目に見えます。
オプション
| フィールド | 型 | 既定値 | 説明 |
|---|---|---|---|
header / footer | { left?, center?, right? } | — | 既定の帯。全ページで使用されます。 |
evenHeader / evenFooter | { left?, center?, right? } | — | differentOddEven が有効なとき偶数ページで使用。 |
firstHeader / firstFooter | { left?, center?, right? } | — | differentFirst が有効なとき 1 ページ目で使用。 |
differentOddEven | boolean | false | 偶数ページで別の帯を使う(袋とじ・見開き用)。 |
differentFirst | boolean | false | 1 ページ目に専用の帯を使う(表紙など)。 |
帯と用紙端との距離は margins.header / margins.footer(Excel の既定は 0.3 インチ)です。帯がその余白より高い場合は本文マージンを押し出すため、背の高いヘッダーはセルの上に重なるのではなく 1 ページあたりの行数を減らします。改ページ計算・PDF エクスポート・ページ分割印刷 HTML はいずれも同じジオメトリで一致します。
Note: 画面上の改ページプレビューでは帯自体は描画されません(枠で示される本文領域が縮むだけです)。実際の表示は印刷または PDF エクスポートで確認してください。
ヘッダー・フッターは xlsx の <headerFooter> と ReoGrid JSON(sheet.print.headerFooter)で往復するため、Excel で作成したテンプレートのページ番号設定がそのまま保たれます。
改ページプレビュー
ページ境界をグリッド上に直接表示する Excel 風のオーバーレイを切り替えます。
ws.setShowPageBreaks(true) // 青い改ページ線を表示
ws.setShowPageBreaks(false) // 非表示
プレビューを有効にすると、現在の印刷設定から計算されたページ帯にシートが分割されます。改ページ線をドラッグすると手動改ページとして固定でき、プログラムから挿入することもできます。
手動改ページ
ws.insertRowPageBreak(40) // 40 行目から新しいページを強制
ws.insertColumnPageBreak(8) // 8 列目から新しいページを強制
手動改ページはプレビューと PDF エクスポートの両方で反映されます。結果のページ帯を確認するには次のようにします。
const pages = ws.getPrintPageRanges() // ページ順の PrintRange[]
pages.forEach((p, i) => {
console.log(`ページ ${i + 1}: 行 ${p.topRow}〜${p.bottomRow}, 列 ${p.leftColumn}〜${p.rightColumn}`)
})
各 PrintRange は { topRow, leftColumn, bottomRow, rightColumn }(0 始まり・両端含む)です。getPrintPageRanges(order?) に PageOrder を渡すと、その呼び出しだけ pageOrder を上書きできます。
レイアウトからページ分割出力へ
PDF エクスポートはこのモデルをそのまま再利用できるため、ページレイアウトがページ分割の唯一の情報源になります。
import { preloadPdfFont } from '@reogrid/pro'
ws.setPrintSettings({ paperSize: 'A4', orientation: 'portrait', scale: 0.9 })
ws.insertRowPageBreak(50)
await preloadPdfFont('ja')
// usePageBreaks により、PDF はプレビューとまったく同じ位置で改ページされます
grid.saveAsPdf({ locale: 'ja', usePageBreaks: true, filename: 'ledger.pdf' })
xlsx への往復
印刷設定と手動改ページは .xlsx(<pageSetup>・<pageMargins>・<rowBreaks> / <colBreaks>)へ書き出し・読み戻しされるため、ReoGrid からエクスポートしたファイルは同じページ設定で Excel に開けます(逆も同様)。ReoGrid JSON でも往復します。
関連項目
- PDFエクスポート —
usePageBreaksでページ分割済みシートを本物の PDF に出力。 - 印刷 — 印刷経路の全体像と選び方。
- HTML で印刷 — ブラウザ標準ダイアログによる簡易印刷。
- XLSXインポート・エクスポート — ページ設定がファイルとともに移動する仕組み。