ReoGrid ReoGrid Web

行と列

行と列のサイズ変更、挿入・削除、表示・非表示、自動フィットの方法を説明します。

Live Demo

サイズ変更

ColumnHandle / RowHandle

const ws = grid.worksheet

// 列幅
ws.column(0).width = 200
const w = ws.column(0).width // 200

// 行高
ws.row(0).height = 40
const h = ws.row(0).height // 40

低レベル API

// 個別設定
ws.setColumnWidth(0, 200)
ws.setRowHeight(0, 40)

// 取得
const width = ws.getColumnWidth(0)
const height = ws.getRowHeight(0)

一括設定

// 複数列の幅を一度に設定
ws.applyColumnWidths(new Map([
  [0, 150],  // A列
  [1, 100],  // B列
  [2, 200],  // C列
]))

// 複数行の高さを一度に設定
ws.applyRowHeights(new Map([
  [0, 40],   // 1行目
  [5, 30],   // 6行目
]))

自動フィット

セルの内容に合わせて列幅・行高を自動調整します。

// 全列を自動フィット
ws.autoFitColumns()

// 特定の列のみ
ws.autoFitColumns({ columns: [0, 1, 2] })

// 手動設定済みの幅を尊重
ws.autoFitColumns({ respectCustomWidth: true })

// 行の自動フィット
ws.autoFitRows()
ws.autoFitRows({ rows: [0, 1, 2] })

挿入・削除

// 行の挿入(3行目の前に2行挿入)
ws.insertRows(2, 2)

// 行の削除(5行目から3行削除)
ws.deleteRows(4, 3)

// 列の挿入(B列の前に1列挿入)
ws.insertColumns(1, 1)

// 列の削除(D列から2列削除)
ws.deleteColumns(3, 2)

挿入・削除は数式のセル参照を自動的に更新します。


表示・非表示

// 行の非表示
ws.setRowHidden(2, true)

// 複数行を一括非表示
ws.setRowsHidden([2, 3, 4], true)

// 行の再表示
ws.setRowHidden(2, false)

// 非表示状態の確認
const hidden = ws.isRowHidden(2) // boolean

// 列の非表示・再表示
ws.setColumnHidden(1, true)
ws.setColumnsHidden([1, 2], true)
ws.setColumnHidden(1, false)
const colHidden = ws.isColumnHidden(1)

グリッドサイズの変更

行数・列数を変更します。

ws.setGridSize(200, 30) // 200行 x 30列

// 現在のサイズ
console.log(ws.rows)    // 200
console.log(ws.columns) // 30

可視範囲の取得

スクロール位置に基づいた現在の表示範囲を取得できます。

// 表示中の行範囲
const rowRange = ws.getVisibleRowRange()
console.log(rowRange.start, rowRange.end)

// 表示中の列範囲
const colRange = ws.getVisibleColumnRange()
console.log(colRange.start, colRange.end)

// 非表示行を除いた実際の表示行インデックス
const visibleRows = ws.getVisibleRowIndices()

プロパティ参照

// 全列幅の配列(読み取り専用)
const widths: readonly number[] = ws.columnWidths

// 全行高の配列(読み取り専用)
const heights: readonly number[] = ws.rowHeights

// ヘッダーサイズ
const headerWidth = ws.headerColumnWidth   // 左ヘッダーの幅
const headerHeight = ws.headerRowHeight    // 上ヘッダーの高さ

使用例:請求書レイアウト

const ws = grid.worksheet

ws.suspendRender()

// 列幅の設定
ws.column(0).width = 40   // No.
ws.column(1).width = 200  // 品名
ws.column(2).width = 80   // 数量
ws.column(3).width = 100  // 単価
ws.column(4).width = 120  // 金額

// ヘッダー行の高さ
ws.row(0).height = 50

// データ行の高さ
for (let r = 1; r <= 10; r++) {
  ws.row(r).height = 28
}

ws.resumeRender()