Excelにおけるデータ検証のC#を使用した方法

Excelのデータ検証は、ユーザーがワークシートに有効なデータのみを入力することを保証します。フォームの設計、データの収集、または財務モデルの構築において、データ検証は構造を維持し、ユーザーエラーを最小限に抑えるのに役立ちます。この投稿では、C#を使用してプログラムでExcelにデータ検証を適用する方法を示します。

この記事では、以下のトピックについて説明します:

C# Excel データバリデーションライブラリ

データ検証は、ユーザーが Excel スプレッドシートに有効で期待される入力を行うことを保証します。私たちは、 Aspose.Cells for .NET API を使用して、Excel にさまざまなタイプのデータ検証を追加します。これにより、Microsoft Excel を必要とせずに、ドロップダウンリスト、数値範囲、日付制限、およびカスタム数式などのルールを定義するための強力で柔軟なアプローチが提供されます。

プロジェクトにNuGetパッケージを介してAspose.Cells for .NETをインストールします:

PM> Install-Package Aspose.Cells

次に、関連する名前空間をインポートします:

using Aspose.Cells;

ExcelでC#を使用してドロップダウンリストのバリデーションを作成する

ユーザーの入力を事前に定義されたオプションのセットに制限するには、Excelでドロップダウンリストの検証を作成します。これにより、一貫した値が保証され、特にフォームやテンプレートで便利です。

C#を使用してExcelでドロップダウンリストを作成するには、これらの手順に従ってください。

  1. 新しい Workbook オブジェクトを作成します。
  2. 最初の worksheet にインデックスを使用してアクセスします。
  3. CellArea の検証のためのターゲットを定義します。
  4. ワークシートの Validations コレクションにアクセスします。
  5. Add() メソッドを使用して新しいバリデーションを追加してください。
  6. ValidationType.Listの検証タイプを設定します。
  7. Formula1 プロパティを使用してドロップダウンオプションを定義します(カンマ区切り)。
  8. セルエリアを AddArea() メソッドを使用して検証に追加してください。
  9. ワークブックを保存して、検証済みのExcelファイルを生成してください。

以下に、これらのステップを実装するC#コードの例を示します:

// 新しいExcelワークブックを作成します。
var workbook = new Workbook();

// ワークブックの最初のワークシートにアクセスする
var sheet = workbook.Worksheets[0];

// 対象セルのバリデーションエリアを定義します(この場合は A1)。
var area = new CellArea
{
    StartRow = 0,     // Row index starts from 0 (Row 1)
    EndRow = 0,       // Apply to a single row
    StartColumn = 0,  // Column index starts from 0 (Column A)
    EndColumn = 0     // Apply to a single column
};

// ワークシートのバリデーションコレクションにアクセスします。
var validations = sheet.Validations;

// 指定されたセル範囲の新しいバリデーションエントリを追加します。
int index = validations.Add(area);
var validation = validations[index];

// バリデーションタイプをドロップダウンリストに設定します。
validation.Type = ValidationType.List;

// 許可されているリスト項目の定義(カンマ区切りの値)
validation.Formula1 = "Red,Green,Blue";

// セルが選択されたときに表示される入力メッセージを設定します。
validation.InputMessage = "Select a color from the list.";

// 無効なデータが入力された場合に表示されるエラーメッセージを設定します。
validation.ErrorMessage = "Only Red, Green, or Blue are allowed.";

// エラーメッセージの表示を有効にする
validation.ShowError = true;

// 定義したエリアを検証に適用します。
validation.AddArea(area);

// 指定されたファイルパスにワークブックを保存します
workbook.Save("dropdown-validation.xlsx");
ExcelでC#を使用してドロップダウンリストの検証を作成する

Excelでのドロップダウンリストの検証をC#を使用して作成する

Excelで整数のみを制限する C# を使用

整数の検証は、ユーザーがExcelに有効な整数値のみを入力することを保証します。これは数量フィールド、年齢入力、または小数やテキストが許可されない予算シートに最適です。

セルが1から100の間の数字のみを受け入れるように制限したいとしましょう。このルールがなければ、ユーザーは150やabcのような無効な入力を誤って入力する可能性があり、スプレッドシートの計算エラーや論理問題を引き起こすことになります。

Aspose.Cells for .NETを使用すると、Excelで手動で設定することなく、C#でこの検証ルールをプログラムで強制することができます。

以下のコードスニペットは、ユーザーが許可された値のみを入力できるように制限する方法を示しています:

using Aspose.Cells;

// 新しい Excel ワークブックを作成します。
var workbook = new Workbook();

// ワークブックの最初のワークシートにアクセスします。
var sheet = workbook.Worksheets[0];

// ターゲットセルエリアを定義します — B2(行 1、列 1)
var area = new CellArea
{
    StartRow = 1,
    EndRow = 1,
    StartColumn = 1,
    EndColumn = 1
};

// ワークシートの検証コレクションにアクセスする
var validations = sheet.Validations;

// 新しいバリデーションを追加して、そのインデックスを取得します。
int index = validations.Add(area);

// インデックスを使用して検証オブジェクトを取得します。
var validation = validations[index];

// 検証タイプを WholeNumber に設定します (整数のみ許可)。
validation.Type = ValidationType.WholeNumber;

// 演算子を「Between」に設定します。
validation.Operator = OperatorType.Between;

// 有効な範囲を定義します: 1 から 100
validation.Formula1 = "1";
validation.Formula2 = "100";

// 無効なデータが入力されたときに表示されるエラーメッセージを設定します。
validation.ErrorMessage = "Enter a number between 1 and 100.";

// バリデーションに失敗したときにエラーアラートを表示することを有効にします。
validation.ShowError = true;

// (Optional if not using Add(area) earlier) エリアをバリデーションに明示的に追加します。
validation.AddArea(area);

// ファイルにワークブックを保存します。
workbook.Save("numbers-validation.xlsx");
ExcelでC#を使用して整数に制限する

ExcelでC#を使用して整数のみに制限する

ExcelでC#を使用して日付範囲の検証を適用する

日付の検証は、ユーザーが有効な日付のみを入力することを保証するのに役立ちます。これは、計画ツール、出席記録、予約シート、特定の範囲内の日付が必要なシナリオなどで便利です。

例えば、プロジェクトスケジューリングテンプレートを作成していて、ユーザーが2024年以内の日付のみを入力できるように制限したいとします。この範囲外の日付(例えば2023年や2025年)をユーザーが入力できるようにすると、数式が壊れたり、記録が一貫しなくなったりする可能性があります。

Aspose.Cells for .NETを使用すると、特定のセルに日付のバリデーションを簡単に適用できるため、ユーザーはあなたの基準を満たす日付のみを入力できます。

以下のコードスニペットは、ユーザーが2024年1月1日から2024年12月31日までの日付のみを入力できるようにする方法を示しています。範囲外の入力はエラーを引き起こし、スプレッドシート全体でよりクリーンで正確なデータを維持するのに役立ちます。

using Aspose.Cells;

// 新しいExcelワークブックを作成する
var workbook = new Workbook();

// ワークブックの最初のワークシートにアクセスします。
var sheet = workbook.Worksheets[0];

// セルの範囲を定義して検証を適用します — C3(行 2、列 2)
var area = new CellArea
{
    StartRow = 2,
    EndRow = 2,
    StartColumn = 2,
    EndColumn = 2
};

// ワークシートのバリデーションコレクションにアクセスする
var validations = sheet.Validations;

// 新しいバリデーションを追加し、そのインデックスを取得します。
int index = validations.Add(area);

// 検証オブジェクトを取得する
var validation = validations[index];

// バリデーションタイプを日付に設定します。
validation.Type = ValidationType.Date;

// 演算子を「Between (開始日と終了日)」に設定します。
validation.Operator = OperatorType.Between;

// 有効な日付範囲を指定してください:2024年1月1日から2024年12月31日まで
validation.Formula1 = "2024-01-01";
validation.Formula2 = "2024-12-31";

// 範囲外の日付が指定されたときに表示するエラーメッセージを設定します。
validation.ErrorMessage = "Date must be within the year 2024.";

// エラーアラートの表示を有効にする
validation.ShowError = true;

// エリアを再適用して、検証が正しくバインドされていることを確認してください。
validation.AddArea(area);

// 指定されたパスにワークブックを保存します
workbook.Save("date-validation.xlsx");

ExcelでC#を使用して数式に基づく検証を使用する

時には、単純なドロップダウンや固定数範囲では不十分なことがあります。特に、ルールが他のセルの値に依存している場合です。数式に基づく検証を使用すると、Excelスタイルの数式を使用してカスタムルールを定義できます。これらのルールは他のセルを参照し、入力が有効かどうかを動的に評価できます。たとえば、セル B1 の値が常に A1 の値より大きいことを保証したい場合があります。これは、価格比較、スコアシート、または日付のシーケンスで一般的なシナリオです。

Aspose.Cells for .NET はこの機能を完全にサポートしており、Excel と同様にカスタム数式を使用して検証を定義できます。

次のコードサンプルは、C#を使用してExcelで数式に基づいた検証を適用する方法を示しています。

using Aspose.Cells;

// 新しい Excel ワークブックを作成します。
var workbook = new Workbook();

// ワークブックの最初のワークシートにアクセスします。
var sheet = workbook.Worksheets[0];

// 検証のためのセル領域を定義します — B1(行 0、列 1)
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 1,
    EndColumn = 1
};

// ワークシートの検証コレクションにアクセスします。
var validations = sheet.Validations;

// コレクションに新しい検証を追加し、そのインデックスを取得します。
int index = validations.Add(area);

// インデックスでバリデーションオブジェクトを取得します。
var validation = validations[index];

// 検証タイプをカスタムに設定します(数式ベースのルールに使用されます)
validation.Type = ValidationType.Custom;

// カスタム式を設定します: B1 は A1 より大きくなければなりません
validation.Formula1 = "=B1>A1";

// 検証が失敗したときに表示されるエラーメッセージを定義します。
validation.ErrorMessage = "Value in B1 must be greater than A1.";

// 無効な入力に対してエラーアラートの表示を有効にします
validation.ShowError = true;

// エリアを明示的に追加して、バリデーションでカバーされていることを確認してください。
validation.AddArea(area);

// 指定されたファイルパスにワークブックを保存します。
workbook.Save("formula-validation.xlsx");

Excelでの入力とエラーメッセージの設定をC#を使用して行う

データ検証を適用することは、解決策の一部に過ぎません。ユーザーが不正なデータを入力したときにガイドすることも同様に重要であり、そこでカスタムアラートやメッセージが重要な役割を果たします。

Aspose.Cells for .NETを使用すると、ユーザーがセルを選択したり、無効なデータを入力したときに表示される便利な入力メッセージやエラーアラートを設定できます。これらのメッセージはユーザーエクスペリエンスを向上させ、混乱を減らし、Excelテンプレートをよりプロフェッショナルにします。

例えば、ユーザーがセルをクリックすると、次のようなツールチップを表示できます。

`1 から 100 までの値のみが許可されます。”

そして、誤った値を入力した場合、Excelは次のようなダイアログボックスを表示できます:

`無効な入力:1から100の間の数を入力してください。”

Excelでは、無効な入力に対する応答をカスタマイズすることもできます。ユーザーを完全にブロックするか(Stop)、警告を表示して進むことを許可するか(Warning)、単に情報メッセージを表示するか(Information)を選択できます。

これらの手順に従って、C#を使用して検証アラートを構成します。

  1. バリデーションルールを設定した後、ユーザーがセルを選択するとヘルプテキストを表示するために、 InputTitleInputMessage を設定します。
  2. ErrorTitleErrorMessage を定義して、検証が失敗した場合に何が問題だったのかを説明します。
  3. AlertStyle を選択してください — オプションには StopWarning、および Information が含まれます。
  4. ShowErrortrue に設定して、検証アラートを有効にします。
  5. ワークブックを保存してください。

これらのアラートは、特に他の人が頻繁に使用または再利用するためのテンプレートを作成しているときに、スプレッドシートをより直感的でユーザーフレンドリーにします。

var workbook = new Workbook();
var sheet = workbook.Worksheets[0];

// 検証エリアを設定 — セル C1 に適用
var area = new CellArea
{
    StartRow = 0,
    EndRow = 0,
    StartColumn = 2, // Column C = 2
    EndColumn = 2
};

// バリデーションを追加する
int index = sheet.Validations.Add(area);
var validation = sheet.Validations[index];

validation.Type = ValidationType.Custom;

// この数式は常にFALSEに評価されます。
validation.Formula1 = "=FALSE";

// 入力メッセージとエラーメッセージを設定する
validation.InputTitle = "Input Restricted";
validation.InputMessage = "Try entering anything to see the validation.";
validation.ErrorTitle = "Invalid Input";
validation.ErrorMessage = "You triggered this validation error successfully!";
validation.AlertStyle = ValidationAlertType.Stop;
validation.ShowError = true;
validation.ShowInput = true;

// エリアにバリデーションを適用します。
validation.AddArea(area);

// 検証されたワークブックを保存します
workbook.Save("D:\\Files\\validated_with_alerts.xlsx");

それらのアラートは使いやすさを高め、ユーザーが何を入力すべきかを明確に導きます。

Excelにおける入力およびエラーメッセージをC#を使用して設定する

ExcelでC#を使用して入力およびエラーメッセージを設定する

無料で試してみてください

Get a free temporary license to test the full capabilities of Aspose.Cells for .NET without any feature limits.

無料リソース

Excelの自動化と検証について、これらのリソースを使ってさらに探求してください:

結論

この記事では、C# を使用して Aspose.Cells for .NET で Excel にデータ検証を実装する方法を示しました。ドロップダウンからカスタム数式まで、Excel 自体に依存せずに、インテリジェントでエラーのないスプレッドシートを構築できます。

ご質問やフィードバックがある場合は、ぜひ私たちの free support forum に投稿してください。お手伝いできることを楽しみにしています!

See Also