.NETでExcelのセルの表示形式を設定する方法

Excelセルの表示形式（数値書式）を設定することは、Excelドキュメントを作成、編集、またはフォーマットする際の重要なステップの一つです。これにより、データが正確に表示されるだけでなく、データの可読性やプロフェッショナルさも向上します。適切な表示形式は、数値やデータの意味を直感的に理解しやすくし、誤解を減らすだけでなく、レポートの自動生成や財務計算などのアプリケーションシナリオにおいても、データの正確性と一貫性を保証するための重要な手段です。.NETプラットフォームを使用することで、**C#を用いてExcelセルの表示形式を簡単に設定**し、自動化された処理を実現できます。

本記事では、**C#を使用して.NETプログラム内でExcelセルの表示形式を設定する方法**について説明し、Excelファイル処理の効率化をサポートします。

- **[C#でExcelセルの表示形式を設定する方法](#cでexcelセルの表示形式を設定する方法)**
- **[C#で指定形式の値をExcelセルに追加する方法](#cで指定形式の値をexcelセルに追加する方法)**

この記事で使用する方法には、無料の[Free Spire.XLS for .NET]()ライブラリが必要です。NuGetからインストールできます。  
```PM> Install-Package FreeSpire.XLS```

## C#でExcelセルの表示形式を設定する方法
Excelセルの表示形式は表示形式コードを用いて設定します。`CellRange.Value`または`CellRange.NumberValue`プロパティを使用してセルに値を追加した後、`CellRange.NumberFormat`プロパティを使用して表示形式を設定します。

### 操作手順の例
1. 必要なモジュールをインポートします。
2. `Workbook`オブジェクトを作成します。
3. `Workbook.Worksheets[]`プロパティで指定したワークシートを取得します。
4. `Worksheet.Range[]`で指定したセルを取得し、`CellRange.Value`または`CellRange.NumberValue`プロパティを用いて値を追加します。
5. `CellRange.NumberFormat`プロパティを用いて形式コードを設定します。
6. `Workbook.SaveToFile()`メソッドでワークブックを保存し、リソースを解放します。

**コード例**
```csharp
using System.Drawing;
using Spire.Xls;

class Program
{
    static void Main(string[] args)
    {
        // 新しいワークブックのインスタンスを作成
        Workbook workbook = new Workbook();

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

        // タイトルを追加
        sheet.Range["B1"].Text = "数値形式";
        sheet.Range["B1"].Style.Font.IsBold = true;
        sheet.Range["B1"].Style.Font.FontName = "HarmonyOS Sans SC";
        sheet.Range["B1:C1"].Merge();
        sheet.Range["B1:C1"].Style.HorizontalAlignment = HorizontalAlignType.Center;

        // 数値形式の例と値を追加
        AddNumberFormatExample(sheet, "B3", "C3", "0", "1234.5678"); // 整数形式
        AddNumberFormatExample(sheet, "B4", "C4", "0.00", "1234.5678"); // 小数点以下2桁
        AddNumberFormatExample(sheet, "B5", "C5", "#,##0.00", "1234.5678"); // カンマ区切り、小数点以下2桁
        AddNumberFormatExample(sheet, "B6", "C6", "$#,##0.00", "1234.5678"); // 通貨形式

        // 負の数の例
        AddNumberFormatExample(sheet, "B7", "C7", "0;[Red]-0", "-1234.5678"); // 負の数を赤で表示
        AddNumberFormatExample(sheet, "B8", "C8", "0.00;[Red]-0.00", "-1234.5678"); // 小数点以下2桁、負の数を赤で表示

        // 科学記数法とパーセント形式の例
        AddNumberFormatExample(sheet, "B9", "C9", "0.00E+00", "1234.5678"); // 科学記数法
        AddNumberFormatExample(sheet, "B10", "C10", "0.00%", "0.5678"); // パーセント形式

        // 日付と時間形式の例
        AddNumberFormatExample(sheet, "B11", "C11", "yyyy-MM-dd", "44930.0"); // Excelの日付値 2023-01-01 に対応
        AddNumberFormatExample(sheet, "B12", "C12", "HH:mm:ss", "0.75"); // Excelの時間値 18:00:00 に対応

        // テキスト形式の例
        AddNumberFormatExample(sheet, "B13", "C13", "@", "テキスト例"); // テキスト形式

        // フォーマットを設定
        sheet.Range["B3:B13"].Style.Color = Color.Gray;
        sheet.Range["C3:C13"].Style.Color = Color.LightGray;
        sheet.Columns[1].ColumnWidth = 24;
        sheet.Columns[2].ColumnWidth = 24;

        // ワークブックをファイルに保存
        workbook.SaveToFile("output/Excelセル数値形式設定.xlsx", ExcelVersion.Version2016);
    }

    private static void AddNumberFormatExample(Worksheet sheet, string textCell, string valueCell, string format, string value)
    {
        sheet.Range[textCell].Text = format; // 数値形式コードを表示
        sheet.Range[valueCell].Value = value; // 値を追加
        sheet.Range[valueCell].NumberFormat = format; // 数値形式を適用
    }
}
```

結果
![C#でExcelセルの表示形式を設定する方法](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/f64396c0-e006-2a42-fe94-aa4ac9540c9b.png)

## C#で指定形式の値をExcelセルに追加する方法
`CellRange`クラスのプロパティを使用すると、セルまたはセル範囲に特定の型の値を直接追加できます。以下は、プロパティとそれぞれの対応する値の例です：

| プロパティ        | 値                           |
| ----------------- | ---------------------------- |
| `Text`            | テキスト（string）           |
| `NumberValue`     | 数値（Double）               |
| `BooleanValue`    | ブール値（Boolean）          |
| `DateTimeValue`   | 日付と時間（DateTime）       |
| `HtmlString`      | HTML形式の文字列（string）   |

### 操作手順の例
1. 必要なモジュールをインポートします。
2. `Workbook`オブジェクトを作成します。
3. `Workbook.Worksheets[]`プロパティで指定したワークシートを取得します。
4. `Worksheet.Range[]`で指定したセルを取得します。
5. `CellRange`クラスのプロパティを使用して指定した型の値を追加します。
6. 必要に応じてフォーマットを設定します。
7. `Workbook.SaveToFile()`メソッドでワークブックを保存し、リソースを解放します。

**コード例**
```csharp
using System;
using Spire.Xls;

class Program
{
    static void Main(string[] args)
    {
        // 新しいワークブックのインスタンスを作成
        Workbook workbook = new Workbook();

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

        // テキスト値を追加
        sheet.Range["C3"].Text = "サンプルテキスト";
        // 数値を追加
        sheet.Range["C4"].NumberValue = 1234.5678;
        // ブール値を追加
        sheet.Range["C5"].BooleanValue = true;
        // 日付と時間値を追加
        sheet.Range["C6"].DateTimeValue = new DateTime(2024, 12, 12);
        // HTML文字列を追加
        sheet.Range["C7"].HtmlString = "<b>太字テキスト</b>";

        // セルをフォーマット
        sheet.Range["C3:C7"].Style.HorizontalAlignment = HorizontalAlignType.Center;
        sheet.Range["C3:C7"].Style.VerticalAlignment = VerticalAlignType.Center;
        sheet.Range["C3:C7"].Style.Font.Size = 14;

        // 列幅を自動調整
        for (int i = 3; i <= 7; i++)
        {
            sheet.AutoFitColumn(i - 1); // 注意：C#では列インデックスは0から始まります
        }

        // ワークブックを保存
        workbook.SaveToFile("output/指定形式の値を追加.xlsx", ExcelVersion.Version2016);

        // リソースを解放
        workbook.Dispose();
    }
}
```

結果
![C#で指定形式の値をExcelセルに追加する方法](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/beb9cdb1-d3e5-3cda-e3f2-9bfa90f23c15.png)

本記事では、C#を用いて.NETプラットフォーム上でExcelセルの表示形式を設定し、指定形式の値をExcelセルに追加する方法を説明しました。これにより、Excelファイルの精密な自動化処理を実現できます。