ReoGrid ReoGrid Web

入力規則

v1.4.0 から、セルや範囲に入力規則(データ検証)を設定できます — ドロップダウンリスト、数値・日付・時刻・文字数の比較、カスタム数式チェックに加え、任意の入力メッセージやエラーアラートを、Excel の「データの入力規則」とまったく同じように扱えます。

Note: 入力規則の作成は Pro 機能です。読み取りと強制(getValidationsgetValidationAtvalidate)は Lite で動作するため、Pro で作成した — または xlsx からインポートした — ルールは無償版でも強制されます

ルールの設定

ValidationRule を範囲・単一セル・明示的な矩形に設定します。

import { createReogrid } from '@reogrid/pro'

const grid = createReogrid({ workspace: '#app' })
const ws = grid.worksheet

// 列全体
ws.range('E2:E100').setValidation({ type: 'list', options: ['低', '中', '高'] })

// 単一セル
ws.cell('B2').setValidation({ type: 'whole', operator: 'between', value1: 1, value2: 100 })

// 明示的な矩形(r1, c1, r2, c2)
ws.setValidation(1, 3, 99, 3, { type: 'decimal', operator: 'greaterThan', value1: 0 })

ルールの削除は ws.range(...).removeValidation()ws.removeValidation(r1, c1, r2, c2)ws.clearValidations() で行います。

基本オプション(全ルール共通)

すべてのルールは共通の基底を継承します。

オプション既定値説明
ignoreBlankbooleantrue空入力は常に通過。
alertStyle'stop' | 'warning' | 'information''stop''stop' のみ書き込みをブロック。他は通知のみ。
showInputMessagebooleanfalseセル選択時に案内バブルを表示。
inputTitle / inputMessagestring案内バブルの内容。
showErrorMessagebooleantrue不正値が拒否されたときにアラートバブルを表示。
errorTitle / errorMessagestringアラートバブルの内容。

ルールの種類

リスト(ドロップダウン)

インラインの options または同一シートの source 範囲・数式を指定します(両者は排他です)。

// インラインオプション
ws.range('B2:B100').setValidation({
  type: 'list',
  options: ['下書き', 'レビュー中', '完了'],
  showInputMessage: true,
  inputTitle: 'ステータス',
  inputMessage: 'ドロップダウンからステータスを選択してください。',
})

// ソース範囲(使用時に解決)
ws.range('A2:A100').setValidation({
  type: 'list',
  source: '=$H$1:$H$5',
  showDropdown: true, // ドロップダウン矢印を表示(既定 true)
})

比較(whole / decimal / date / time / textLength)

type が値の種類、operatorvalue1between / notBetween では value2 も)が判定を定めます。リテラルと数式文字列の両方を受け付けます。

// 1〜100 の整数
ws.range('C2:C100').setValidation({
  type: 'whole', operator: 'between', value1: 1, value2: 100,
  errorMessage: '数量は 1〜100 の整数で入力してください。',
})

// 正の小数
ws.range('D2:D100').setValidation({ type: 'decimal', operator: 'greaterThan', value1: 0 })

// 本日以降の日付(通知の警告)
ws.range('E2:E100').setValidation({
  type: 'date', operator: 'greaterThanOrEqual', value1: '=TODAY()',
  alertStyle: 'warning', errorMessage: '期日が過去の日付です。',
})

// 文字数 5 以下
ws.range('F2:F100').setValidation({ type: 'textLength', operator: 'lessThanOrEqual', value1: 5 })

演算子:between · notBetween · equal · notEqual · greaterThan · lessThan · greaterThanOrEqual · lessThanOrEqual

カスタム(数式)

真値を返す数式なら有効とみなされます。相対参照は範囲の左上から (row - r1, col - c1) だけオフセットされます — 条件付き書式の式ルールと同じ相対参照の意味です。

// G2:G100 は左隣の値より大きくなければならない
ws.range('G2:G100').setValidation({
  type: 'custom',
  formula: '=G2>F2',
  errorMessage: '前の列の値より大きくしてください。',
})

any

{ type: 'any' } は入力の案内を残したまま実効ルールを解除します — 入力を制限せずにヒントだけ表示したいときに便利です。

アラートスタイル

不正入力を実際にブロックするのは alertStyle: 'stop'(既定)だけです。'warning''information' はメッセージを表示しつつ値を通過させます — 強制ではなく誘導したいときに選びます。

読み取りと検証(Lite で読み取り可)

ws.getValidations()          // ValidationEntry[]
ws.getValidationAt(row, col) // セルを覆うルール、または null
ws.validate()                // 現在の値に対する検証結果を返す

これらは Lite で動作し、Pro で作成したルールは Lite でも強制されます。

xlsx への往復

ルールは <dataValidations> にシリアライズされ、xlsx と ReoGrid JSON の両方で往復するため、検証付きワークブックは Excel との往復でルールを保持します。

関連項目

ニュースレター

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

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