ReoGrid ReoGrid Web

ソートとフィルター

列のソートとオートフィルターによるドロップダウン制御でデータを絞り込む方法を説明します。

ソートとフィルターはPro版で利用可能です。

Live Demo

列ソート

const ws = grid.worksheet

// 昇順ソート
ws.sortColumn(0, 'asc')

// 降順ソート
ws.sortColumn(0, 'desc')

// ソート状態の取得
const state = ws.getSortState()
// { column: 0, order: 'asc' } or null

ソートはオートフィルターの範囲内で動作します。フィルターが設定されていない場合はシート全体がソートされます。


オートフィルター

ヘッダー行にドロップダウンを表示し、データを絞り込みます。

フィルターの作成

const filter = ws.createAutoFilter({
  headerRow: 0,
  startColumn: 0,
  endColumn: 4,
})

フィルターの操作

// 列のユニーク値を取得
const values = filter.getColumnValues(1)
// ['Tokyo', 'Osaka', 'Nagoya', ...]

// フィルター条件を設定(選択した値のみ表示)
filter.setColumnFilter(1, new Set(['Tokyo', 'Osaka']))

// フィルターを適用
filter.apply()

// 特定の列のフィルター状態を取得
const colFilter = filter.getColumnFilter(1)
// { selectedValues: Set, ... } or null

// アクティブなフィルターがあるか
const hasFilters = filter.hasActiveFilters()

// すべてのフィルターをクリア
filter.clearAll()

フィルター内でのソート

filter.sortColumn(0, 'asc')
const sortState = filter.getSortState()

イベント

フィルター変更の購読

filter.onFilterChange((event) => {
  console.log('Hidden rows:', event.hiddenRowCount)
})

フィルタードロップダウンのクリック

ws.onFilterDropdownClick((column) => {
  console.log('Filter dropdown clicked for column:', column)
  // カスタムフィルター UI を表示するなど
})

フィルターの削除

ws.removeAutoFilter()

// フィルターの取得
const currentFilter = ws.getAutoFilter() // AutoColumnFilter | null

使用例:データテーブル

const ws = grid.worksheet

ws.suspendRender()

// ヘッダー
const headers = ['ID', '名前', '部署', '入社年', '売上']
headers.forEach((h, i) => {
  ws.cell(0, i).setValue(h).setStyle({ bold: true })
})

// データ
const data = [
  [1, '田中', '営業', 2020, 1200000],
  [2, '鈴木', '開発', 2019, 980000],
  [3, '佐藤', '営業', 2021, 1500000],
  // ...
]
data.forEach((row, r) => {
  row.forEach((val, c) => {
    ws.setCellInput(r + 1, c, String(val))
  })
})

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

// 交互行カラー
ws.setAlternateRowColors({ evenColor: '#ffffff', oddColor: '#f8fafc' })

// オートフィルター設定
const filter = ws.createAutoFilter({
  headerRow: 0,
  startColumn: 0,
  endColumn: 4,
})

ws.resumeRender()

// フィルター操作の例 — 営業部のみ表示
filter.setColumnFilter(2, new Set(['営業']))
filter.apply()

注意事項

  • ソートはオートフィルターの範囲内で動作します。フィルターが設定されていない場合はシート全体がソートされます。
  • フィルターは行の表示・非表示を切り替えることで実現されます。非表示行のデータは保持されます。