日常的な帳票開発において、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ファイル
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ファイル
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ファイル
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ファイル
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ファイル
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 データ検証の自動化は効率と正確性を大きく高める手段となります。