C#を使ってExcelにデータを書き込む方法

エクセルは、データ処理、分析、レポート作成に広く使われている表計算ソフトである。エクセル・フォーマットの使用は、ビジネス、学術、日常生活において非常に一般的です。この記事では、テキスト、数値、配列、DataTableを含む、無料の.NETライブラリを使用して**Excelにデータを書き込む方法**を詳しく説明します。
*	[Excelセルにテキストと数値を書き込む](#excelセルにテキストと数値を書き込む)
*	[Excelワークシートに配列を書き込む](#excelワークシートに配列を書き込む)
*	[ExcelワークシートにDataTableを書き込む](#excelワークシートにdatatableを書き込む)

## 無料の.NET Excelライブラリ
この記事で使用しているフリーのExcelライブラリは [**Free Spire.XLS for .NET**](https://www.e-iceblue.com/Introduce/free-xls-component.html)です。

このライブラリはVisual Studio > NuGet Package Managerで **「FreeSpire.XLS 」** を検索し、**「Install 」** をクリックしてダウンロードできます。
または、以下のリンクから製品パッケージをダウンロードし、手動でdllを参照として追加することもできます。

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

 
## Excelセルにテキストと数値を書き込む
1.	`Workbook`オブジェクトを作成します；
2.	指定されたワークシートを取得する；
3.	指定されたセルにデータを書き込む
 	* **テキストを書き込む**： `Worksheet.Range[].Text` または`Worksheet.Range[].Value`プロパティ；
 	* **数値を書き込む**：`Worksheet.Range[].Value2`プロパティ；
4.	Excelファイルを保存します。

**C#コード：**
```c#
using Spire.Xls;

namespace WriteDataToCells
{
    class Program
    {
        static void Main(string[] args)
        {
            //エクセルのワークブックの作成
            Workbook workbook = new Workbook();

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

            //指定したセルにデータを書き込む
            worksheet.Range["A1"].Text = "商品ID";
            worksheet.Range["B1"].Text = "商品名";
            worksheet.Range["C1"].Value = "在庫状況";
            worksheet.Range["D1"].Value = "数量";

            worksheet.Range["A2"].Value = "SP-001";
            worksheet.Range["B2"].Value = "商品A";
            worksheet.Range["C2"].Value = "在庫補充";
            worksheet.Range["D2"].Value2 = 80;

            worksheet.Range["A3"].Value = "SP-002";
            worksheet.Range["B3"].Value = "商品B";
            worksheet.Range["C3"].Value = "使用中";
            worksheet.Range["D3"].Value2 = 102;

            //フォントスタイルの設定
            worksheet.Range["A1:D1"].Style.Font.IsBold = true;
            worksheet.Range["A1:D3"].Style.Font.Size = 11;

            //エクセルファイルを保存する
            workbook.SaveToFile("WriteData.xlsx", ExcelVersion.Version2016);
        }
    }
}
```
![WriteExcelTextNumber.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/5a374f50-4ede-f618-fe62-6cd72e1b5b52.png)


## Excelワークシートに配列を書き込む
1.	`Workbook`オブジェクトを作成します；
2.	指定されたワークシートの取得
3.	2次元配列を定義する；
4.	**`Worksheet.InsertArray(Object\[,\] objectArray, int firstRow, int firstColumn)`** メソッドでワークシートの指定した位置に2次元配列のデータを挿入する；([APIリファレンス](https://www.e-iceblue.com/apireference/net/Spire.XLS/html/M_Spire_Xls_Core_Spreadsheet_XlsWorksheet_InsertArray_3.htm))
5.	Excelファイルを保存します。

**C#コード：**
```c#
using Spire.Xls;

namespace WriteArraysToWorksheet
{
    class Program
    {
        static void Main(string[] args)
        {
            //エクセルのワークブックの作成
            Workbook workbook = new Workbook();

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

            //二次元配列の作成
            string[,] twoDimensionalArray = new string[,]{

                {"SKU", "説明", "購入日", "購入価格"},
                {"SP7875", "品目 1", "2024/1/31", "2000"},
                {"TR87680", "品目 2", "2024/3/10", "1500"},
                {"MK676554", "品目 3", "2024/3/25", "560"}
            };

            //ワークシートに配列を書き込む
            worksheet.InsertArray(twoDimensionalArray, 1, 1);

            //フォントスタイルの設定
            worksheet.Range["A1:D1"].Style.Font.IsBold = true;
            worksheet.Range["A1:D4"].Style.Font.Size = 11;

            //エクセルファイルを保存する
            workbook.SaveToFile("InsertArrays.xlsx", ExcelVersion.Version2016);
        }
    }
}
```
![WriteExcelArray.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/83b21025-5b19-6471-04af-489b42ab7cf2.png)



## ExcelワークシートにDataTableを書き込む
1.	`Workbook`オブジェクトを作成します；
2.	指定されたワークシートを取得する；
3.	`DataTable`オブジェクトを作成し、データを追加する；
4.	**`Worksheet.InsertDataTable(DataTable dataTable,bool columnHeaders, int firstRow, int firstColumn, bool transTypes)`** メソッドを使用して、DataTableのデータをワークシートに挿入する；([APIリファレンス](https://www.e-iceblue.com/apireference/net/Spire.XLS/html/M_Spire_Xls_Core_Spreadsheet_XlsWorksheet_InsertDataTable_1.htm))
5.	Excelファイルを保存する。

**C#コード：**
```c#
using System;
using System.Data;
using Spire.Xls;

namespace WriteDataTableToWorksheet
{
    class Program
    {
        static void Main(string[] args)
        {
            //エクセルのワークブックの作成
            Workbook workbook = new Workbook();

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

            //DataTableオブジェクトの作成
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("シリアル番号", typeof(Int32));
            dataTable.Columns.Add("商品", typeof(String));
            dataTable.Columns.Add("単価", typeof(Decimal));

            //行を作成し、データを追加する
            DataRow dr = dataTable.NewRow();
            dr[0] = 556788;
            dr[1] = "データケーブル";
            dr[2] = "8.5";
            dataTable.Rows.Add(dr);

            dr = dataTable.NewRow();
            dr[0] = 768087;
            dr[1] = "ワイヤレスマウス";
            dr[2] = "59.9";
            dataTable.Rows.Add(dr);

            dr = dataTable.NewRow();
            dr[0] = 336813;
            dr[1] = "ネットワークケーブル";
            dr[2] = "15.5";
            dataTable.Rows.Add(dr);

            //データ・テーブルをワークシートに書き込む
            worksheet.InsertDataTable(dataTable, true, 1, 1, true);

            //フォントスタイルの設定
            worksheet.Range["A1:C1"].Style.Font.IsBold = true;
            worksheet.Range["A1:C4"].Style.Font.Size = 11;

            //エクセルファイルを保存する
            workbook.SaveToFile("WriteDataTable.xlsx", ExcelVersion.Version2016);
        }
    }
}
```
![WriteExcelDatatable.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/4b7b663e-17cb-9c54-8471-01ffe73cea40.png)


上記の3つの例では、様々な種類のデータをエクセルのワークシートに書き込むことができます。
* * *

▶ Excelでさらにデータを分析したり、チャートやその他の要素を挿入する必要がある場合は、ここをクリックして無料のSpire.XLSライブラリが提供する機能のチュートリアルをご覧ください：

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