0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

C# で Excel セルのデータ検証を設定する

Posted at

日常的な帳票開発において、Excel のデータの正確性と一貫性は、見た目の美しさと同じくらい重要です。適切にデータ検証を設定することで、入力ミスを防ぎ、入力ルールを統一し、データの信頼性と標準化を高めることができます。

手作業で検証ルールを設定するのに比べて、C# プログラムで自動的に Excel データ検証を生成する方法は、効率を向上させるだけでなくルールの統一も保証します。本記事では、1 つのワークシート上で ドロップダウンリスト、数値範囲、日付範囲、文字列の長さ、カスタム数式、入力メッセージ を設定する方法を紹介し、実際の業務シナリオと組み合わせてデータ検証の効果を理解できるよう解説します。

ここで使用する方法は Free Spire.XLS for .NET に基づいています。インストールは NuGet から可能です:

Install-Package FreeSpire.XLS

1. ワークブックとワークシートの初期化

using Spire.Xls;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "社員情報入力";

操作説明
新しい Excel ファイルを作成し、最初のワークシートを取得して「社員情報入力」と命名しています。すべてのデータ検証ルールはこのシートにまとめて設定し、整理された形で確認できるようにします。


2. ドロップダウンリスト検証(部署選択)

実務では、社員の所属部署は「人事部」「財務部」「技術部」「マーケティング部」など決まった選択肢であることが多いです。ドロップダウンリストを利用することで、誤った部署名の入力を防ぐことができます。

// 部署リスト
sheet.Range["A1"].Text = "選択可能な部署:";
sheet.Range["A2"].Text = "人事部";
sheet.Range["A3"].Text = "財務部";
sheet.Range["A4"].Text = "技術部";
sheet.Range["A5"].Text = "マーケティング部";

// 入力エリア
sheet.Range["C1"].Text = "所属部署:";
CellRange deptCell = sheet.Range["C2"];

deptCell.DataValidation.AllowType = CellDataType.Formula;
// ドロップダウンリストのデータソースを指定
deptCell.DataValidation.DataRange = sheet.Range["A2:A5"];
// 直接リストを設定することも可能
// deptCell.DataValidation.Values = ["人事部", "財務部", "技術部", "マーケティング部"];
deptCell.DataValidation.ShowError = true;
deptCell.DataValidation.AlertStyle = AlertStyleType.Stop;
deptCell.DataValidation.ErrorTitle = "入力エラー";
deptCell.DataValidation.ErrorMessage = "ドロップダウンリストから部署を選択してください!";

// 入力メッセージ
deptCell.DataValidation.ShowInput = true;
deptCell.DataValidation.InputTitle = "部署選択";
deptCell.DataValidation.InputMessage = "固定された部署リストから選択してください。";

利用シーン:部署名の入力ゆれ(例:「技術」と「技術部」)を防止。

保存後のExcelファイル

Excel ドロップダウンリスト検証


3. 数値検証(社員年齢)

社員の年齢は通常 18 ~ 60 歳の範囲に収まります。数値検証を使って入力を制限できます。

sheet.Range["D1"].Text = "社員年齢 (18-60):";
CellRange ageCell = sheet.Range["D2"];

ageCell.DataValidation.AllowType = CellDataType.Integer;
ageCell.DataValidation.CompareOperator = ValidationComparisonOperator.Between;
ageCell.DataValidation.Formula1 = "18";
ageCell.DataValidation.Formula2 = "60";
ageCell.DataValidation.ShowError = true;
ageCell.DataValidation.ErrorMessage = "18 から 60 の整数を入力してください!";

利用シーン:不合理な年齢(例:5 歳や 100 歳)の入力を防ぐ。

保存後のExcelファイル

Excel 数値検証


4. 日付検証(入社日)

企業では、入社日を特定の範囲に制限することがあります。例えば、2023 年に限定する場合です。

sheet.Range["E1"].Text = "入社日 (2023年):";
CellRange hireDateCell = sheet.Range["E2"];

hireDateCell.DataValidation.AllowType = CellDataType.Date;
hireDateCell.DataValidation.CompareOperator = ValidationComparisonOperator.Between;
hireDateCell.DataValidation.Formula1 = "2023-01-01";
hireDateCell.DataValidation.Formula2 = "2023-12-31";
hireDateCell.DataValidation.ShowError = true;
hireDateCell.DataValidation.ErrorMessage = "2023 年内の日付を入力してください!";

利用シーン:人事システムや勤怠管理のルール外の日付を防止。

保存後のExcelファイル

Excel 日付検証


5. 文字列長検証(社員ID)

社員 ID は固定の桁数を持つ場合があり、例えば 6 桁に限定されることがあります。

sheet.Range["F1"].Text = "社員ID (6桁):";
CellRange idCell = sheet.Range["F2"];

idCell.DataValidation.AllowType = CellDataType.TextLength;
idCell.DataValidation.CompareOperator = ValidationComparisonOperator.Equal;
idCell.DataValidation.Formula1 = "6";
idCell.DataValidation.ShowError = true;
idCell.DataValidation.ErrorMessage = "社員IDは6桁で入力してください!";

利用シーン:桁数が異なる ID によるシステムエラーを防ぐ。

保存後のExcelファイル

Excel 文字列長検証


6. カスタム数式検証(給与 > 基本給)

給与明細では「実支給額」が「基本給」を下回らないことを保証する必要があります。これをカスタム数式で実現します。

sheet.Range["G1"].Text = "基本給:";
sheet.Range["G2"].NumberValue = 4000;
sheet.Range["H1"].Text = "実支給額:";
CellRange salaryCell = sheet.Range["H2"];

salaryCell.DataValidation.AllowType = CellDataType.Formula;
salaryCell.DataValidation.Formula1 = "=H2>G2";
salaryCell.DataValidation.ShowError = true;
salaryCell.DataValidation.ErrorMessage = "実支給額は基本給を上回る必要があります!";

利用シーン:「実支給額 < 基本給」という誤入力を防ぐ。

保存後のExcelファイル

Excel カスタム数式検証


7. ファイル保存

すべての検証ルールを設定後、Excel ファイルとして保存します。

// フォント設定と自動調整、保存
sheet.Range.Style.Font.FontName = "メイリオ";
sheet.Range.Style.Font.Size = 12f;
sheet.Range.AutoFitColumns();
workbook.SaveToFile("DataValidation.xlsx", ExcelVersion.Version2016);

主要クラスとプロパティまとめ

クラス / プロパティ 説明
Workbook Excel ブックを表し、作成や保存を担当
Worksheet Excel ワークシートを表し、操作の基盤
CellRange セルまたはセル範囲を表す
DataValidation セルのデータ検証ルールを設定する
AllowType 検証タイプを指定(整数、日付、文字列長、数式など)
CellDataType 検証タイプの値を指定(Integer、Date など)
Values ドロップダウンリストの値を直接設定する
CompareOperator 比較演算子を指定(Between、Equal など)
Formula1 / Formula2 検証条件の値を設定する
ShowError エラーメッセージを表示するかどうか
ErrorMessage エラーメッセージの内容
ShowInput 入力メッセージを表示するかどうか
InputMessage 入力メッセージの内容

まとめ

本記事では Free Spire.XLS for .NET を使用して、1 枚の Excel ワークシート上で複数のデータ検証を設定する方法を紹介しました。ドロップダウンリスト、数値範囲、日付範囲、文字列長、カスタム数式、入力メッセージを組み合わせることで、誤入力を効果的に減らし、データの統一性を確保し、帳票の品質を向上させることができます。人事、財務、その他の大量データ入力を伴うシステム開発において、C# による Excel データ検証の自動化は効率と正確性を大きく高める手段となります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?