C# を使用してExcel 条件格式を設定する方法

Excelの条件付き書式設定とは、条件に基づいてデータバー、カラースケール、アイコンセットを使用して、関連するセルを強調表示し、外れ値を強調し、データを視覚化することを指します。条件付き書式設定機能は、フィルタリングの高度なバージョンです。つまり、最初に条件を設定して特定の条件を満たすデータを選択し、次に特定の書式を指定します。データ処理においてExcelは掛け替えのない利点があるため、条件付き書式設定は、習得しなければならないスキルと言っても過言ではありません。この記事では、無料バージョンの製品である[Free Spire.XLS](https://www.e-iceblue.com/Introduce/free-xls-component.html)を使用して、C＃でExcelの条件付き書式を実装する方法を紹介します。

製品は[公式サイト](https://www.e-iceblue.com/Download/download-excel-for-net-free.html)または[Nuget]()からダウンロードすることができます。ダウンロードが完了したら、ダウンロードパッケージのBinフォルダーに.DllをVisual Studioへの参照として追加してください。Spire.XLSを使用してExcelファイルを新たに作成します。Microsoft Excelはその結果を確認するために使用されます。

**ステップ1**　無料バージョンのSpire.XLSを使用して、ワークブックとフォームを作成します。
```
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
```
**ステップ2**　サンプルデータをフォームセルに追加し、セルの行の高さ、列の幅、および配置を設定します。
```
sheet.Range["A1"].Value = "名前/学科";
sheet.Range["A2"].Value = "田中";
sheet.Range["A3"].Value = "水野";
sheet.Range["A4"].Value = "木村";
sheet.Range["A5"].Value = "金田";
sheet.Range["A6"].Value = "井上";
sheet.Range["A7"].Value = "土方";
sheet.Range["B1"].Value = "国語";
sheet.Range["C1"].Value = "数学";
sheet.Range["D1"].Value = "英語";
sheet.Range["E1"].Value = "理科";
sheet.Range["B2"].NumberValue = 56;
sheet.Range["B3"].NumberValue = 73;
sheet.Range["B4"].NumberValue = 75;
sheet.Range["B5"].NumberValue = 89;
sheet.Range["B6"].NumberValue = 65;
sheet.Range["B7"].NumberValue = 90;
sheet.Range["C2"].NumberValue = 78;
sheet.Range["C3"].NumberValue = 99;
sheet.Range["C4"].NumberValue = 86;
sheet.Range["C5"].NumberValue = 45;
sheet.Range["C6"].NumberValue = 98;
sheet.Range["C7"].NumberValue = 83;
sheet.Range["D2"].NumberValue = 79;
sheet.Range["D3"].NumberValue = 70;
sheet.Range["D4"].NumberValue = 90;
sheet.Range["D5"].NumberValue = 87;
sheet.Range["D6"].NumberValue = 65;
sheet.Range["D7"].NumberValue = 78;
sheet.Range["E2"].NumberValue = 65;
sheet.Range["E3"].NumberValue = 55;
sheet.Range["E4"].NumberValue = 100;
sheet.Range["E5"].NumberValue = 85;
sheet.Range["E6"].NumberValue = 60;
sheet.Range["E7"].NumberValue = 75;

sheet.AllocatedRange.RowHeight = 15;
sheet.AllocatedRange.ColumnWidth = 17;
sheet.AllocatedRange.VerticalAlignment = VerticalAlignType.Center;
sheet.AllocatedRange.HorizontalAlignment = HorizontalAlignType.Center;
```
**ステップ3**　シートのセルB2：E3の条件付き書式を設定します。60ポイント未満のに赤いマークを、60ポイントを超えるに緑のマークをつけます。
```
ConditionalFormatWrapper format1 = sheet.Range["B2:E3"].ConditionalFormats.AddCondition();
format1.FormatType = ConditionalFormatType.CellValue;
format1.FirstFormula = "60";
format1.Operator = ComparisonOperatorType.Less;
format1.FontColor = Color.Red;

ConditionalFormatWrapper format2 = sheet.Range["B2:E3"].ConditionalFormats.AddCondition();
format2.FormatType = ConditionalFormatType.CellValue;
format2.FirstFormula = "60";
format2.Operator = ComparisonOperatorType.GreaterOrEqual;
format2.FontColor = Color.ForestGreen;
```
**ステップ4**　シートのセルB4：E5のデータにデータバーの条件付き書式を設定します。
```
ConditionalFormatWrapper format3 = sheet.Range["B4:E5"].ConditionalFormats.AddCondition();
format3.FormatType = ConditionalFormatType.DataBar;
format3.DataBar.BarColor = Color.DeepSkyBlue;
```
**ステップ5**　シートのセルB6：E7のデータに色レベルの条件付き書式を設定します。
```
ConditionalFormatWrapper format4 = sheet.Range["B6:E7"].ConditionalFormats.AddCondition();
format4.FormatType = ConditionalFormatType.ColorScale;
```
**ステップ6**　ファイルをExcel 2019として保存し、結果を表示します。
```
workbook.SaveToFile("sample.xlsx", ExcelVersion.Version2010);
System.Diagnostics.Process.Start("sample.xlsx");
```
結果は以下のように
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/40e0199e-b3fd-60c2-cfa1-759a1a8ef990.png)


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

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

            sheet.Range["A1"].Value = "名前/学科";
            sheet.Range["A2"].Value = "田中";
            sheet.Range["A3"].Value = "水野";
            sheet.Range["A4"].Value = "木村";
            sheet.Range["A5"].Value = "金田";
            sheet.Range["A6"].Value = "井上";
            sheet.Range["A7"].Value = "土方";
            sheet.Range["B1"].Value = "国語";
            sheet.Range["C1"].Value = "数学";
            sheet.Range["D1"].Value = "英語";
            sheet.Range["E1"].Value = "理科";
            sheet.Range["B2"].NumberValue = 56;
            sheet.Range["B3"].NumberValue = 73;
            sheet.Range["B4"].NumberValue = 75;
            sheet.Range["B5"].NumberValue = 89;
            sheet.Range["B6"].NumberValue = 65;
            sheet.Range["B7"].NumberValue = 90;
            sheet.Range["C2"].NumberValue = 78;
            sheet.Range["C3"].NumberValue = 99;
            sheet.Range["C4"].NumberValue = 86;
            sheet.Range["C5"].NumberValue = 45;
            sheet.Range["C6"].NumberValue = 98;
            sheet.Range["C7"].NumberValue = 83;
            sheet.Range["D2"].NumberValue = 79;
            sheet.Range["D3"].NumberValue = 70;
            sheet.Range["D4"].NumberValue = 90;
            sheet.Range["D5"].NumberValue = 87;
            sheet.Range["D6"].NumberValue = 65;
            sheet.Range["D7"].NumberValue = 78;
            sheet.Range["E2"].NumberValue = 65;
            sheet.Range["E3"].NumberValue = 55;
            sheet.Range["E4"].NumberValue = 100;
            sheet.Range["E5"].NumberValue = 85;
            sheet.Range["E6"].NumberValue = 60;
            sheet.Range["E7"].NumberValue = 75;

            sheet.AllocatedRange.RowHeight = 15;
            sheet.AllocatedRange.ColumnWidth = 17;
            sheet.AllocatedRange.VerticalAlignment = VerticalAlignType.Center;
            sheet.AllocatedRange.HorizontalAlignment = HorizontalAlignType.Center;

            ConditionalFormatWrapper format1 = sheet.Range["B2:E3"].ConditionalFormats.AddCondition();
            format1.FormatType = ConditionalFormatType.CellValue;
            format1.FirstFormula = "60";
            format1.Operator = ComparisonOperatorType.Less;
            format1.FontColor = Color.Red;

            ConditionalFormatWrapper format2 = sheet.Range["B2:E3"].ConditionalFormats.AddCondition();
            format2.FormatType = ConditionalFormatType.CellValue;
            format2.FirstFormula = "60";
            format2.Operator = ComparisonOperatorType.GreaterOrEqual;
            format2.FontColor = Color.ForestGreen;

            ConditionalFormatWrapper format3 = sheet.Range["B4:E5"].ConditionalFormats.AddCondition();
            format3.FormatType = ConditionalFormatType.DataBar;
            format3.DataBar.BarColor = Color.DeepSkyBlue;

            ConditionalFormatWrapper format4 = sheet.Range["B6:E7"].ConditionalFormats.AddCondition();
            format4.FormatType = ConditionalFormatType.ColorScale;

            workbook.SaveToFile("sample.xlsx", ExcelVersion.Version2010);
            System.Diagnostics.Process.Start("sample.xlsx");

        }
    }
}
```
今回のExcel 条件格式を設定する方法は以上でした、最後まで読んでいただきありがとうございました。