ReoGrid ReoGrid Web

行と列

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

Live Demo

サイズ変更

ColumnHandle / RowHandle

const ws = grid.worksheet

// 列幅 — プロパティ代入またはチェーン可能な setter
ws.column(0).width = 200
ws.column('A').setWidth(200)          // A1 形式のラベルも使えます
const w = ws.column(0).width          // 200

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

低レベル getter

// 現在の幅・高さを取得
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] })

挿入・削除

構造変更は worksheet.rows / worksheet.columns コレクション経由で行います:

// 3行目の位置から2行挿入(既存行は下にシフト)
ws.rows.insertAt(2, 2)

// 5行目から3行削除
ws.rows.deleteAt(4, 3)

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

// D列から2列削除
ws.columns.deleteAt(3, 2)

特定の行・列を基準にした挿入・削除には RowHandle / ColumnHandle も使えます:

ws.row(2).insertAbove(2)       // 3行目の上に2行追加
ws.row(10).insertBelow()       // 11行目の下に1行追加
ws.row(4).delete()             // 5行目を削除

ws.column('B').insertBefore()    // B列の前に1列追加
ws.column(3).insertAfter(2)      // D列の後に2列追加
ws.column(3).delete()            // D列を削除

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


表示・非表示

// ハンドル経由で個別操作
ws.row(2).hide()
ws.row(2).show()
ws.column('B').hide()
ws.column('B').show()

// プロパティ形式
ws.row(2).hidden = true
const hidden = ws.row(2).hidden     // boolean

// コレクション経由で一括操作
ws.rows.hide(2, 3)                  // 2,3,4 行目を非表示
ws.rows.show(2, 3)
ws.columns.hide(1, 2)               // B,C 列を非表示
ws.columns.setHidden([1, 5, 7], true)  // 任意のインデックスを非表示

// 読み取り専用チェック(worksheet 上に残っています)
const rowHidden = ws.isRowHidden(2)
const colHidden = ws.isColumnHidden(1)

グリッドサイズの変更

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

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

// 現在のサイズ
console.log(ws.rowCount)    // 200
console.log(ws.columnCount) // 30

// コレクション経由でも取得可能
console.log(ws.rows.count)    // 200
console.log(ws.columns.count) // 30

行数・列数を個別に変更することもできます(コレクション経由):

// 行数のみ変更(列数は変わらない)
ws.rows.setCount(500)

// 列数のみ変更(行数は変わらない)
ws.columns.setCount(50)

両軸を同時に変更したい場合は ws.setGridSize(rows, cols) を使ってください — 構造変更イベントを2回ではなく1回で発火できます。


可視範囲の取得

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

// 表示中の行範囲
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()
ニュースレター

開発の最新情報をお届けします

新しいリリース・機能追加・お知らせをいち早く受け取るには、
メーリングリストにご登録ください。