ReoGrid ReoGrid Web

列固定(フリーズペイン)

ヘッダー行や左端列をスクロール時に固定表示する方法を説明します。

列固定はPro版で利用可能です。

Live Demo

基本的な使い方

const ws = grid.worksheet

// 先頭1行を固定(ヘッダー行の固定)
ws.setFrozenRows(1)

// 先頭2列を固定
ws.setFrozenColumns(2)

// 固定を解除
ws.setFrozenRows(0)
ws.setFrozenColumns(0)

固定状態の取得

const frozenRows = ws.getFrozenRows()       // 固定行数
const frozenCols = ws.getFrozenColumns()     // 固定列数
const frozenWidth = ws.getFrozenWidth()      // 固定列の合計幅 (px)
const frozenHeight = ws.getFrozenHeight()    // 固定行の合計高さ (px)

仕組み

フリーズペインを設定すると、グリッドは最大 4 つのビューポートに分割されます。

+---------------+--------------------+
| 固定ヘッダー   | 固定行(横スクロール)|
+---------------+--------------------+
| 固定列         | メインエリア        |
|(縦スクロール) |(縦横スクロール)    |
+---------------+--------------------+
  • 固定ヘッダー — スクロールしても動かない
  • 固定行 — 横スクロールに追従、縦スクロールでは固定
  • 固定列 — 縦スクロールに追従、横スクロールでは固定
  • メインエリア — 通常のスクロール

使用例:データテーブル

const ws = grid.worksheet

// ヘッダー行を設定
const headers = ['ID', '名前', '部署', '入社日', '売上']
headers.forEach((h, i) => {
  ws.cell(0, i).setValue(h).setStyle({
    bold: true,
    backgroundColor: '#1e40af',
    color: '#ffffff',
  })
})

// ヘッダー行を固定
ws.setFrozenRows(1)

// ID 列を固定
ws.setFrozenColumns(1)

使用例:Excel 風のフリーズ

// B2 を基点にフリーズ(A列と1行目を固定)
ws.setFrozenRows(1)
ws.setFrozenColumns(1)