入力規則でドロップダウン
範囲に Excel 風の入力規則を付けます。list ルールはドロップダウンを自動描画し(専用のセルタイプは不要)、他のルールタイプは範囲外の入力を拒否します。v1.4 で追加されました。
Pro 限定。
setValidationには有効なlicenseKeyが必要です。読み取り(getValidations・validate)は Lite でも動くため、Pro で付けたルールは Lite ビューアでも有効です。
明示的なリストからドロップダウン
import { createReogrid } from '@reogrid/pro';
const grid = createReogrid('#grid', { licenseKey: 'YOUR-LICENSE-KEY' });
const ws = grid.worksheet;
ws.range('B2:B100').setValidation({
type: 'list',
options: ['Draft', 'In review', 'Done'],
showInputMessage: true,
inputTitle: 'ステータス',
inputMessage: 'ドロップダウンからステータスを選んでください。',
});
範囲内の各セルにドロップダウンの矢印が表示され、リストの値のみを受け付けます。
範囲を参照するドロップダウン
インラインの options の代わりに、同一シートの source 範囲や数式を使えます(両者は排他)。選択肢が別の列にある場合に便利です:
ws.range('A2:A100').setValidation({
type: 'list',
source: '=$H$1:$H$5', // 使用時に解決
showDropdown: true, // ドロップダウン矢印を表示(既定 true)
});
範囲外の数値をブロック
whole / decimal / date / time / textLength ルールは operator と value1(between / notBetween は value2 も)で判定します。編集をブロックするのは stop スタイルのみで、warning と information は助言的です:
// 1〜100 の整数 — それ以外は拒否。
ws.range('C2:C100').setValidation({
type: 'whole',
operator: 'between',
value1: 1,
value2: 100,
errorMessage: '数量は 1〜100 の整数で入力してください。',
});
// 今日以降の期日 — 助言的な警告のみ。
ws.range('E2:E100').setValidation({
type: 'date',
operator: 'greaterThanOrEqual',
value1: '=TODAY()',
alertStyle: 'warning',
errorMessage: '期日が過去の日付です。',
});
演算子: between · notBetween · equal · notEqual · greaterThan · lessThan · greaterThanOrEqual · lessThanOrEqual。
カスタム数式ルール
真の値を返す数式なら合格です。相対参照は範囲の左上を基準にオフセットされます:
// G2:G100 は左隣の値より大きいこと。
ws.range('G2:G100').setValidation({
type: 'custom',
formula: '=G2>F2',
errorMessage: '前の列より大きい値を入力してください。',
});
読み取りと削除
ws.getValidationAt(1, 1); // セルに掛かるルール、なければ undefined
ws.getValidations(); // シート上の全ルール
ws.validate(1, 1, 'Foo'); // 書き込まずに値を検証
ws.range('B2:B100').removeValidation();
ws.clearValidations(); // シート上の全ルールを削除
ルールは xlsx の <dataValidations> と ReoGrid JSON でラウンドトリップします。
関連
- 入力規則
- 色付きステータスドロップダウン — 選択値に応じて行を色分け
- セルタイプ