C＃を使用してExcelデータ検証をする方法

Excelでは、データ検証機能を使用して、ワークシートのセルに入力できるデータを定義できます。たとえば、入力したデータを特定の範囲の数値に制限したり、ドロップダウンリストを使用してユーザーが選択できるデータなどを制限したりすることができます。そしてこの記事では、主にC＃プログラミングおよび強力なライブラリーである[Spire.XLS for .NET](https://www.e-iceblue.com/Download/download-excel-for-net-now.html)を使用してExcelのデータ有効性機能を実現する方法について説明します。

## 一　数値の有効性

データ入力の範囲を1から10までの数字に制限する

1.新しいExcelワークブックを作成し、最初のワークシートを取得します。
```cs
Workbook wb = new Workbook();
Worksheet sheet = wb.Worksheets[0];
```
2.セルB9にテキストを入力し、フォーマットします。
```cs
sheet.Range["B9"].Text = "数字を入力してください";
sheet.Range["B9"].Style.Font.IsBold = true;
sheet.Range["B9"].Style.KnownColor = ExcelColors.Turquoise;
```
3.セルC9に番号検証を適用します。
```cs
sheet.Range["C9"].DataValidation.AllowType = CellDataType.Decimal;
sheet.Range["C9"].DataValidation.Formula1 = "1";
sheet.Range["C9"].DataValidation.Formula2 = "10";
sheet.Range["C9"].DataValidation.CompareOperator = ValidationComparisonOperator.Between;
sheet.Range["C9"].DataValidation.InputMessage = "このセルに1から10までの数字を入力してください";
sheet.Range["C9"].Style.KnownColor = ExcelColors.LightGreen1;
```
操作した結果：
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/8101749c-d3a2-8905-7334-6ef28e95234f.png)

## 二　リストの有効性

ドロップダウンリストのオプションに入力内容を制限する

1.セルB2にテキストを入力し、フォーマットします。
```cs
sheet.Range["B2"].Text = "部門:";
sheet.Range["B2"].Style.Font.IsBold = true;
sheet.Range["B2"].Style.KnownColor = ExcelColors.Turquoise;
```
2.リスト検証をセルC2に適用します。
```cs
sheet.Range["C2"].DataValidation.Values = new string[] { "セール", "人事", "研究開発", "ファイナンス" };
sheet.Range["C2"].DataValidation.IsSuppressDropDownArrow = false;
sheet.Range["C2"].Style.KnownColor = ExcelColors.LightGreen1;
```
操作した結果：
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/67d16739-efe3-7b9e-380d-69da0196c238.png)

## 三　データ有効性エラーメッセージ/警告をカスタマイズする

データの有効性がセルに適用された後、条件に相応しくないデータにはセルに正常に入力されません。要件を満たさないデータが強制的に入力されると、Excelは次のようなエラーメッセージを表示します。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/08effd82-59cf-021c-545d-029dbb6f3c82.png)

Excelのデフォルトエラーメッセージを使用したくない場合は、次のコードを使用してエラーメッセージの内容をカスタマイズできます。
```cs
sheet.Range["C2"].DataValidation.AlertStyle = AlertStyleType.Warning;
sheet.Range["C2"].DataValidation.ShowError = true;
sheet.Range["C2"].DataValidation.ErrorTitle = "エラー001";
sheet.Range["C2"].DataValidation.ErrorMessage = "ドロップダウンリストから項目を選択してください";  
```
操作した結果：
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/32f641af-fbd7-4fc9-beb1-c2b79cc2697d.png)

## 完全なるコード：
```cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Xls;

namespace Apply_data_validation_to_excel_cells
{
    class Program
    {
        static void Main(string[] args)
        {
            Workbook wb = new Workbook();
            Worksheet sheet = wb.Worksheets[0];

            //数値有効性を適用する
            sheet.Range["B9"].Text = "数字を入力してください";
            sheet.Range["B9"].Style.Font.IsBold = true;
            sheet.Range["B9"].Style.KnownColor = ExcelColors.Turquoise;

            sheet.Range["C9"].DataValidation.AllowType = CellDataType.Decimal;
            sheet.Range["C9"].DataValidation.Formula1 = "1";
            sheet.Range["C9"].DataValidation.Formula2 = "10";
            sheet.Range["C9"].DataValidation.CompareOperator = ValidationComparisonOperator.Between;
            sheet.Range["C9"].DataValidation.InputMessage = "このセルに1から10までの数字を入力してください";
            sheet.Range["C9"].Style.KnownColor = ExcelColors.LightGreen1;

            //ドロップダウンリストの有効性を適用する
            sheet.Range["B2"].Text = "部門";
            sheet.Range["B2"].Style.Font.IsBold = true;
            sheet.Range["B2"].Style.KnownColor = ExcelColors.Turquoise;

            sheet.Range["C2"].DataValidation.Values = new string[] { "セール", "人事", "研究開発", "ファイナンス" };
            sheet.Range["C2"].DataValidation.IsSuppressDropDownArrow = false;
            sheet.Range["C2"].Style.KnownColor = ExcelColors.LightGreen1;

            //有効性エラーメッセージをカスタマイズする
            sheet.Range["C2"].DataValidation.AlertStyle = AlertStyleType.Warning;
            sheet.Range["C2"].DataValidation.ShowError = true;
            sheet.Range["C2"].DataValidation.ErrorTitle = "エラー001";
            sheet.Range["C2"].DataValidation.ErrorMessage = "ドロップダウンリストから項目を選択してください";

            //ドキュメントを保存する
            wb.SaveToFile("result.xlsx", FileFormat.Version2010);
            System.Diagnostics.Process.Start("result.xlsx");
        }
    }
}
```
今回のExcelデータ検証をする方法は以上でした、最後まで読んでいただきありがとうございました。