.NET でデータ検証を使用する方法

.NET でデータ検証を使用する方法

Aspose.Cells FOSS for .NET は、Worksheet.Validations(ValidationCollection)を通じてセル範囲にデータ検証ルールを追加できるようにします。Add(CellArea) を呼び出して Validation オブジェクトを作成し、ValidationType を使用してその Type を設定します。サポートされているタイプには List、Decimal、および Custom が含まれます。dotnet add package Aspose.Cells_FOSS でインストールします。

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

ステップ 1: パッケージをインストール

dotnet add package Aspose.Cells.FOSS

ステップ 2: 名前空間をインポート

using Aspose.Cells_FOSS;

ステップ 3: リストドロップダウン検証を追加

CellArea を CellArea.CreateCellArea() で作成し、Worksheet.Validations に追加し、Formula1 内でカンマ区切りリストとして ValidationType.List を設定します。

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Dropdown list for A1:A10
var listVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A1", "A10"))];
listVal.Type = ValidationType.List;
listVal.Formula1 = "\"Open,In Progress,Closed\"";
listVal.InCellDropDown = true;
listVal.IgnoreBlank = true;
listVal.InputTitle = "Status";
listVal.InputMessage = "Choose a status from the dropdown";

wb.Save("list-validation.xlsx");
Console.WriteLine("List validation added.");

ステップ 4: 数値範囲の検証を追加する

ValidationType.Decimal を OperatorType.Between と Formula1/Formula2 と組み合わせて数値入力を制限します。

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Decimal range validation for B1:B10 — allow 0 to 100
var numVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B1", "B10"))];
numVal.Type = ValidationType.Decimal;
numVal.Operator = OperatorType.Between;
numVal.Formula1 = "0";
numVal.Formula2 = "100";
numVal.ErrorTitle = "Out of Range";
numVal.ErrorMessage = "Please enter a number between 0 and 100.";
numVal.ShowError = true;
numVal.IgnoreBlank = true;

wb.Save("decimal-validation.xlsx");
Console.WriteLine("Decimal validation added.");

ステップ 5: 同じシート上で複数の検証を組み合わせる

同じシートに対して、Validations.Add() を複数回呼び出し、各回で異なる CellArea を指定することで、任意の数の検証を追加できます。

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// List validation for column A (status)
var statusVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("A2", "A100"))];
statusVal.Type = ValidationType.List;
statusVal.Formula1 = "\"New,Open,Closed\"";
statusVal.InCellDropDown = true;

// Decimal validation for column B (score)
var scoreVal = ws.Validations[ws.Validations.Add(CellArea.CreateCellArea("B2", "B100"))];
scoreVal.Type = ValidationType.Decimal;
scoreVal.Operator = OperatorType.Between;
scoreVal.Formula1 = "0";
scoreVal.Formula2 = "10";
scoreVal.ShowError = true;

wb.Save("combined-validation.xlsx");
Console.WriteLine("Combined validations added to sheet.");

一般的な問題と対策

保存後、Excelでドロップダウンが表示されません。 Ensure InCellDropDown = true が設定されています Validation 保存前にオブジェクトが設定されます。ドロップダウンは、このフラグが設定されている場合にのみ、Excelで表示されます true and ValidationType.List が使用されています。

検証では、定義された範囲外の値も許可されます。 検証はライブラリではなく Excel によって強制されます。検証ルールを設定しても、ライブラリ自体がセルに任意の値を書き込むことを防げません。検証はユーザーが Excel でデータを入力したときに適用されます。

Formula1 リスト検証では次のように表示されます #NAME? Excel で。 インラインのカンマ区切りリストの場合、文字列をエスケープされた引用符で囲みます: Formula1 = "\"Option1,Option2,Option3\"". 内部の引用符がないと、Excel はその値をセル参照の数式として扱います。

OperatorType.Between 正しく適用されていません。 両方を確実に Formula1 (minimum) と Formula2 (maximum) を文字列として設定します。欠落している Formula2 for Between 上限が未定義のままになります。

よくある質問

セル範囲(例: 名前付き範囲)に対してバリデーションを行うことはできますか?

セル範囲参照(例: "Sheet2!$A$1:$A$10")として Formula1 を設定します。その範囲の値がドロップダウンリストのソースとして使用されます。

バリデーションはライブラリが無効な値を書き込むのを防ぎますか?

いいえ。バリデーションルールはユーザーがデータを入力したときに Excel によって強制されます。Aspose.Cells の FOSS ライブラリは、プログラムから Cell.PutValue() を呼び出す際にはバリデーションを強制しません。

検証ルールを削除するにはどうすればよいですか?

Worksheet.Validations[index] を介してルールにアクセスし、ValidationCollection 操作を使用してルールを管理します。あるいは、不要なルールが含まれない新しいブックモデルを作成してください。

シートあたりの検証の最大数はどれくらいですか?

XLSX 形式は、ワークシートあたり最大 65,530 件の検証ルールをサポートしています。

参照

 日本語