C＃を使用してExcelファイルのマージする方法

普通にExcelドキュメントを使って仕事をしているとき、常に複数のファイルを作成、使用しなければなりません、そして、多くのドキュメントを一つにマージする場合もあります。Excelをマージする日常的な方法は、通常、次の2つのタイプに分けられます。

**複数のExcelファイルを1つのファイルにマージする**
**複数のExcelファイルを1つのワークシートにマージする**

この記事では、C＃および.NET Excelコンポーネントの[Spire.XLS](https://www.e-iceblue.com/Download/download-excel-for-net-now.html)を使用して、上記の2つの方法でExcelファイルをマージする方法を紹介します。
## 複数のExcelファイルを1つのファイルにマージする

テストドキュメントは以下のようになります：
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/55e30a78-3069-f177-d900-f8a9c8a23aee.png)
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/f3685bf9-bfc6-441e-7782-93f5137e1a46.png)

### コード一覧

```
using Spire.Xls;

namespace Merge
{
    class Program
    {
        static void Main(string[] args)
        {
            //新しいブックオブジェクトを作成する
            Workbook newbook = new Workbook();
            newbook.Version = ExcelVersion.Version2013;
            //ドキュメント内のワークシートを削除する（新しく作成されたドキュメントには、デフォルトで3つのワークシートが含まれている）
            newbook.Worksheets.Clear();
            //マージするに必要なExcelドキュメントをロードするための一時的なブックを作成する
            Workbook tempbook = new Workbook();
            //配列にマージする必要のあるExcelドキュメント名を保存する
            string[] excelFiles = new string[] { "C:\\Users\\Administrator\\Desktop\\1.xlsx", "C:\\Users\\Administrator\\Desktop\\2.xlsx" };
            //配列をトラバースする
            for (int i = 0; i < excelFiles.Length; i++)
            {
                //Excelドキュメントをロードする
                tempbook.LoadFromFile(excelFiles[i]);
                //AddCopyメソッドを使用して、ドキュメント内のすべてのワークシートを新しいブックに追加する
                foreach (Worksheet sheet in tempbook.Worksheets)
                {
                    newbook.Worksheets.AddCopy(sheet);
                }
            }
            //ドキュメントを保存する
            newbook.SaveToFile("MergeFiles.xlsx", ExcelVersion.Version2013);
        }
    }
}
```
マージした結果：
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/3e4869c7-31d9-ab44-7209-e4d034a67e5e.png)
![04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e6d74f1b-8934-d679-c364-6aca5259b447.png)


## 複数のExcelファイルを1つのワークシートにマージする
テストドキュメントは以下のようになります：
![05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/6ac4c64f-59aa-2dcb-d400-0eb3e20acbb8.png)

### コード一覧

```
using Spire.Xls;
using System.Data;

namespace Merge
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] excelFiles = new string[] { "C:\\Users\\Administrator\\Desktop\\1.xlsx", "C:\\Users\\Administrator\\Desktop\\2.xlsx", "C:\\Users\\Administrator\\Desktop\\3.xlsx" };

            Workbook workbook1 = new Workbook();
            //一番目のExcelドキュメントをロードする
            workbook1.LoadFromFile(excelFiles[0]);

            //二番目のExcelドキュメントをロードする
            Workbook workbook2 = new Workbook();
            workbook2.LoadFromFile(excelFiles[1]);

            //三番目のExcelドキュメントをロードする
            Workbook workbook3 = new Workbook();
            workbook3.LoadFromFile(excelFiles[2]);

            //最初のファイルの一番目のシートを取得する
            Worksheet sheet1 = workbook1.Worksheets[0];

            //2番目と3番目のExcelファイルのワークシートをdatatableを介して最初のファイルの一番目のワークシートに挿入する
            Worksheet sheet2 = workbook2.Worksheets[0];
            DataTable dataTable1 = sheet2.ExportDataTable();

            Worksheet sheet3 = workbook3.Worksheets[0];
            DataTable dataTable2 = sheet3.ExportDataTable();

            sheet1.InsertDataTable(dataTable1, true, sheet1.LastRow + 1, 1);
            sheet1.InsertDataTable(dataTable2, true, sheet1.LastRow + 1, 1);

            //ドキュメントを保存する
            workbook1.SaveToFile("Merged.xlsx", ExcelVersion.Version2013);
        }
    }
}
```
![06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e7080b03-c601-831e-280a-ee863aa0fff3.png)

今回のExcelファイルのマージする方法は以上でした、最後まで読んでいただきありがとうございます。