データ検証の操作

データ検証の操作

データ検証の操作

Aspose.Cells FOSS for C++ は、Validation および ValidationCollection クラスを通じて、ワークシートにセルレベルのデータ検証ルールを追加することをサポートします。WorkbookValidator クラスは、保存前の一貫性チェックを提供します。


検証ルールの追加

ワークシートの検証コレクションにアクセスし、ValidationCollection::Add() を使用して新しいルールを追加します。返された Validation オブジェクトでタイプ、数式、対象領域を設定します:

#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/ValidationCollection.h"
#include "aspose/cells_foss/Validation.h"
#include "aspose/cells_foss/CellArea.h"

using namespace Aspose::Cells_FOSS;

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    ValidationCollection& validations = sheet.GetValidations();

    int idx = validations.Add();
    Validation& v = validations[idx];

    v.SetType(ValidationType::WholeNumber);
    v.SetFormula1("1");
    v.SetFormula2("100");
    v.SetIgnoreBlank(true);
    v.SetInCellDropDown(false);
    v.SetInputTitle("Enter Value");
    v.SetInputMessage("Value must be between 1 and 100.");
    v.SetErrorTitle("Invalid Input");
    v.SetErrorMessage("Value is out of range.");
    v.SetShowInput(true);
    v.SetShowError(true);

    CellArea area = CellArea::CreateCellArea("B2", "B10");
    v.AddArea(area);

    workbook.Save("validated.xlsx");
    return 0;
}

検証タイプ

ValidationType 列挙体は、適用可能な制約の種類を定義します:

ValidationType説明
WholeNumber整数値制約
Decimal浮動小数点制約
List数式または範囲からのドロップダウンリスト
Date日付値制約
TextLength文字列の長さ制約
Custom数式ベースのカスタムルール

アラートスタイル

ValidationAlertType 列挙は、検証が失敗したときに表示される動作を制御します:

AlertStyleBehavior
Stopエントリをブロックし、エラーダイアログを表示
Warning警告を表示し、ユーザーは受け入れるか拒否できる
Information情報ツールチップを表示します

Validation::SetAlertStyle(ValidationAlertType) でアラートスタイルを設定します。


セルでの検証クエリ

ValidationCollection::GetValidationInCell(row, col) を使用して、特定のセルに適用される検証ルールを検索します。該当するルールがない場合は nullptr を返します。


検証ルールの削除

特定のセルまたは範囲エリアから検証を削除します:

CellArea area = CellArea::CreateCellArea("B2", "B10");
validations.RemoveArea(area);
// Or remove a single cell:
validations.RemoveACell(1, 1); // row=1, col=1 (0-based)

保存前のブック検証

保存前にブックモデルの整合性チェックを実行するには WorkbookValidator::ValidateForSave を呼び出します。これは Workbook::Save によって自動的に呼び出されますが、開発中に個別に呼び出すことも可能です:

WorkbookValidator validator;
validator.ValidateForSave(workbook);

ヒントとベストプラクティス

  • 範囲タイプのバリデーション(WholeNumber, Decimal, Date)では、下限と上限を定義するために、SetFormula1SetFormula2 の両方を必ず設定してください。
  • 空のセルがエラーを起こさずにバリデーションを通過できるように、SetIgnoreBlank(true) を使用します。
  • 同じシート上で重複するバリデーション領域がないか確認するために、新しいルールを追加する前に ValidationCollection::AreasOverlap を呼び出してください。
  • WorkbookValidator::ValidateForSave は保存時に内部的に呼び出されます。開発中にそれを呼び出して、問題を早期に検出しましょう。

一般的な問題

問題原因修正
セルに検証が適用されていません領域が追加されていません対象範囲で Validation::AddArea(area) を呼び出す
ドロップダウンが表示されませんSetInCellDropDown(false)リスト検証にSetInCellDropDown(true)を設定します
ルールが重複しています2つのルールが同じセルをカバーしていますAreasOverlap を使用して競合を検出し、解決します
ValidateForSave が失敗しますモデルの不整合保存する前に、報告された不整合を確認し、修正してください

API Reference の概要

クラス/メソッド説明
ValidationCollection::Add()新しい空の検証ルールを追加する
ValidationCollection::GetValidationInCell(row, col)セルの検証を検索する
ValidationCollection::RemoveArea(area)範囲から検証を削除する
ValidationCollection::RemoveACell(row, col)セルから検証を削除する
ValidationCollection::AreasOverlap重複する検証領域を確認する
Validation::SetType(ValidationType)検証タイプを設定します。
Validation::SetFormula1(expr)下限を設定するか、リストソースを設定する
Validation::SetFormula2(expr)上限を設定する
Validation::AddArea(area)範囲にルールを適用する
Validation::RemoveArea(area)範囲からルールを削除する
Validation::SetAlertStyle(style)停止/警告/情報の動作を設定します
WorkbookValidator::ValidateForSave保存前の整合性チェック

参照

 日本語