C#でExcelにドロップダウンリストを作成する

ドロップダウンリストは、ユーザーが事前に定義されたリストから値のみを選択することを保証し、データ入力エラーを減らすだけでなく、時間を節約し、効率を向上させます。
MS Excelでは、「データ検証 」機能を使ってドロップダウンリストを作成することができますが、この記事では、**C#を使ってExcelで無料の.NETライブラリを使用してドロップダウンリストを作成する方法**を2つの例で紹介します。
* [文字列配列を使ってドロップダウンリストを作成する](#例-1-文字列配列を使ってドロップダウンリストを作成する)
* [セル範囲の値を使用してドロップダウンリストを作成する](#例-2-セル範囲の値を使用してドロップダウンリストを作成する)

## ドロップダウン・リストを作成する無料のC#ライブラリ
[**Free Spire.XLS for .NET**](https://www.e-iceblue.com/Introduce/free-xls-component.html)は、.NET（C#、VB.NET、ASP.NET、.NET Core、.NET 5.0、.NET 6.0、MonoAndroid、Xamarin.iOS）アプリケーションでExcelファイルを操作するための無料のライブラリです。
Excelのセルにドロップダウンリストを追加するには、[**NuGet**](http://www.nuget.org/packages/FreeSpire.XLS/)経由でプロジェクトに無料のAPIをインストールするか、以下のリンクからダウンロードしてください。

https://www.e-iceblue.com/Download/download-excel-for-net-free.html


## 例 1: 文字列配列を使ってドロップダウンリストを作成する
この例では、まず **`XlsRange.DataValidation.Values`** プロパティでドロップダウンリストのソース値として文字列配列を定義し、**`IsSuppressDropDownArrow`** プロパティの値をFalseに設定してドロップダウンアローを適用します。

**出力結果は次のようになる：**
![エクセルのドロップダウンリスト1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/ad4caa76-ac71-11b3-fbdf-f20af3b67ba4.png)


**サンプルC#コード:**
```python
using Spire.Xls;

namespace DropdownList
{
    class Program
    {
        static void Main(string[] args)
        {
            //Workbookオブジェクトの作成
            Workbook workbook = new Workbook();

            //最初のワークシートを取得する
            Worksheet sheet = workbook.Worksheets[0];

            //セルB2にテキストを追加し、そのフォント・スタイルを設定する
            sheet.Range["B2"].Value = "部署";
            sheet.Range["B2"].Style.Font.IsBold = true;
            sheet.Range["B2"].Style.KnownColor = ExcelColors.LightYellow;

            //ドロップダウンリストの値を設定する
            sheet.Range["C2"].DataValidation.Values = new string[] { "経理部", "営業部", "技術部", "人事部", "法務部" };

            //指定したセルにドロップダウンリストを作成する
            sheet.Range["C2"].DataValidation.IsSuppressDropDownArrow = false;

            //結果文書を保存する
            workbook.SaveToFile("ExcelDropdownList.xlsx", ExcelVersion.Version2016);
        }
    }
}
```

## 例 2: セル範囲の値を使用してドロップダウンリストを作成する
この例では、**`XlsRange.DataValidation.DataRange`** プロパティを使用して、指定されたデータ範囲をドロップダウンリストのソースとして参照しています。
この方法でドロップダウンリストを作成するとより柔軟で、ドロップダウンリストの値を更新したい場合は、対応するセルのデータを直接更新できます。

**出力結果は次のようになる：**
![エクセルのドロップダウンリスト2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/04999b45-026c-1afa-3103-b2f8167b2cf8.png)

**サンプルC#コード:**
```python
using Spire.Xls;

namespace DropdownList2
{
    class Program
    {
        static void Main(string[] args)
        {
            //Workbookオブジェクトの作成
            Workbook workbook = new Workbook();

            //最初のワークシートを取得する
            Worksheet sheet = workbook.Worksheets[0];

            //セルC2にテキストを追加し、そのフォント・スタイルを設定する
            sheet.Range["C2"].Value = "年齢";
            sheet.Range["C2"].Style.Font.IsBold = true;
            sheet.Range["C2"].Style.KnownColor = ExcelColors.PaleBlue;

            //指定したセルに値を追加する
            sheet.Range["A12"].Value = "20-29";
            sheet.Range["A13"].Value = "30-39";
            sheet.Range["A14"].Value = "40-49";

            //データ検証ソースとして指定したデータ範囲を参照してドロップダウンリストを作成する
            sheet.Range["C3"].DataValidation.DataRange = sheet.Range["A12:A14"];

            //結果文書を保存する
            workbook.SaveToFile("ExcelDropdownList2.xlsx", ExcelVersion.Version2016);
        }
    }
}
```
* * *
-- 無料の.NETライブラリで利用可能なExcel文書処理機能についてもっと知りたい方は、クリックして他の例をご覧ください。

https://www.e-iceblue.com/Tutorials/Spire.XLS/Spire.XLS-Program-Guide/Spire.XLS-Program-Guide-Content.html