C++でスプレッドシートにデータ検証を追加する方法

C++でスプレッドシートにデータ検証を追加する方法

Aspose.Cells FOSS for C++ は、ユーザーが特定のセルや範囲に入力できる値を制限するセルレベルのデータ検証ルールをサポートしています。Validation、ValidationCollection、および WorkbookValidator クラスが検証 API を構成します。

ステップバイステップガイド

ステップ 1: ビルドの設定

cmake_minimum_required(VERSION 3.15)
project(DataValidation CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(DataValidation main.cpp)
target_link_libraries(DataValidation PRIVATE Aspose.Cells.Foss.Cpp)

ステップ 2: 必要なヘッダーをインクルードする

#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;

ステップ 3: 検証コレクションにアクセスする

ワークシートから ValidationCollection を取得する:

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

ステップ 4: 検証ルールを追加

ValidationCollection::Add() を呼び出し、返された Validation オブジェクトを設定します:

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

v.SetType(ValidationType::WholeNumber);
v.SetFormula1("1");
v.SetFormula2("100");
v.SetIgnoreBlank(true);
v.SetInputTitle("Enter Quantity");
v.SetInputMessage("Enter a whole number between 1 and 100.");
v.SetErrorTitle("Invalid Input");
v.SetErrorMessage("Value must be between 1 and 100.");
v.SetShowInput(true);
v.SetShowError(true);
v.SetAlertStyle(ValidationAlertType::Stop);

ステップ 5: ルールを範囲に適用

Validation::AddArea を使用して CellArea に検証を添付します:

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

ステップ 6: ワークブックを保存

workbook.Save("validated.xlsx");
workbook.Dispose();

ステップ 7: 保存前検証を実行 (オプション)

保存前にモデルの問題を検出するため、開発中に WorkbookValidator::ValidateForSave を呼び出します:

WorkbookValidator validator;
validator.ValidateForSave(workbook);
workbook.Save("validated.xlsx");

一般的な問題と対策

保存されたファイルに検証が表示されません Ensure Validation::AddArea(area) ルールの設定後に呼び出されます。関連付けられたエリアがないルールはシリアライズされません。

ドロップダウンリストが表示されません 設定 v.SetInCellDropDown(true) および設定 v.SetType(ValidationType::List) with SetFormula1 範囲またはカンマ区切りの値を指す。

重複する検証エリア 使用 ValidationCollection::AreasOverlap 新しいルールを追加する前に競合がないか確認します。重複するルールは Excel で予期しない動作を引き起こす可能性があります。

入力メッセージが表示されません 両方を確実に SetShowInput(true) and SetInputMessage("...") が設定されていることを確認してください。空のメッセージ文字列は、たとえ…でも入力プロンプトを抑制します。 SetShowInput(true) が呼び出されます。

ValidateForSave エラーを報告します 報告された不整合を確認してください。一般的な原因として、範囲タイプの検証における数式境界の欠落や、無効なセル領域座標があります。

よくある質問

サポートされている検証タイプは何ですか?

The ValidationType 列挙は次を含みます: WholeNumber、Decimal、List、Date、TextLength、Custom、および Any。

範囲から検証ルールを削除できますか?

はい。ValidationCollection::RemoveArea(area) を使用して範囲からルールを削除し、単一セルの場合は RemoveACell(row, col) を使用します。

同じ検証ルールを複数の範囲に適用できますか?

はい。同じ Validation オブジェクトに対して Validation::AddArea(area) を複数回呼び出すことで、追加の範囲に適用できます。

利用可能な警告スタイルは何ですか?

ValidationAlertType には次が含まれます: Stop(無効な入力をブロック)、Warning(警告するが入力は許可)、および Information(情報ツールチップのみ)。

検証は実行時に機能しますか、それとも Excel のみですか?

データ検証ルールはXLSXファイルに保存され、Excelまたは互換リーダーによって適用されます。ライブラリは、プログラムで値を設定した際に実行時に検証制約を評価しません。

参照

 日本語