チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.XLS for .NET»文書操作»C#/VB.NET:Excel ファイルをマージする方法
2022-08-03

C#/VB.NET:Excel ファイルをマージする方法

同じタイプまたはカテゴリの Excel ファイルをマージすることで、複数のファイルを同時に開くことを回避し、時間を節約できます。この記事では、Spire.XLS for .NET を使用して、C# および VB.NET でプログラムによって Excel ファイルをマージする方法を紹介します。

Spire.XLS for.NET をインストールします

まず、Spire.XLS for.NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.XLS

複数の Excel ファイルを1つの Excel ファイルにマージする方法

以下は、複数の Excel ファイルを1つの Excel ファイルにマージする手順です。

  • マージが必要な Excel ファイルのパスを文字列配列に保存します。
  • Workbook クラスのオブジェクトを初期化して新しい Excel ワークブックを作成し。Workbook.Worksheets.Clear() メソッドを使用し、ワークブック内のデフォルトのワークシートを消去します。
  • 別の一時的な Workbook クラスのオブジェクトを初期化します。
  • 文字列配列をループし、Workbook.LoadFromFile() メソッドを使用し、現在のワークブックを一時的な Workbook クラスのオブジェクトにロードします。
  • 現在のワークブック内のワークシートをループし、Workbook.Worksheets.AddCopy() メソッドを使用して各ワークシートを現在のワークブックから新しいワークブックにコピーします。
  • Workbook.SaveToFile() メソッドを使用して新しいワークブックをファイルに保存します。
  • C#
  • VB.NET
using Spire.Xls;

namespace MergeExcelFiles
{
    class Program
    {
        static void Main(string[] args)
        {
            //マージが必要なExcelファイルのパスを文字列配列に保存する
            string[] inputFiles = new string[] { "2019.xlsx", "2020.xlsx", "2021.xlsx" };

            //Workbookクラスのオブジェクトを初期化する
            Workbook newWorkbook = new Workbook();
            //ワークブック内のデフォルトのワークシートを消去する
            newWorkbook.Worksheets.Clear();

            //別の一時的なWorkbookクラスのオブジェクトを初期化する
            Workbook tempWorkbook = new Workbook();

            //文字列配列をループする
            foreach (string file in inputFiles)
            {
                //現在のワークブックをロードする
                tempWorkbook.LoadFromFile(file);
                //現在のワークブック内のワークシートをループする
                foreach (Worksheet sheet in tempWorkbook.Worksheets)
                {
                    //各ワークシートを現在のワークブックから新しいワークブックにコピーする
                    newWorkbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll);
                }
            }

            //新しいワークブックをファイルに保存する
            newWorkbook.SaveToFile("MergeWorkbooks.xlsx", ExcelVersion.Version2013);
        }
    }
}
Imports Spire.Xls

Namespace MergeExcelFiles
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            ' マージが必要なExcelファイルのパスを文字列配列に保存する
            Dim inputFiles = New String() {"2019.xlsx", "2020.xlsx", "2021.xlsx"}

            ' Workbookクラスのオブジェクトを初期化する
            Dim newWorkbook As Workbook = New Workbook()
            'ワークブック内のデフォルトのワークシートを消去する
            newWorkbook.Worksheets.Clear()

            '別の一時的なWorkbookクラスのオブジェクトを初期化する
            Dim tempWorkbook As Workbook = New Workbook()

            '文字列配列をループする
            For Each file In inputFiles
                '現在のワークブックをロードする
                tempWorkbook.LoadFromFile(file)
                '現在のワークブック内のワークシートをループする
                For Each sheet As Worksheet In tempWorkbook.Worksheets
                    '各ワークシートを現在のワークブックから新しいワークブックにコピーする
                    newWorkbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)
                Next
            Next

            '新しいワークブックをファイルに保存する
            newWorkbook.SaveToFile("MergeWorkbooks.xlsx", ExcelVersion.Version2013)
        End Sub
    End Class
End Namespace

C#/VB.NET:Excel ファイルをマージする方法

Excel ファイル内の複数のワークシートのデータを1つのシートにマージする方法

以下は、Excel ファイル内の複数のワークシートのデータを 1つのワークシートにマージする手順です。

  • Workbook クラスのオブジェクトを初期化して。Workbook.LoadFromFile() メソッドを使用して、Excel ファイルをロードします。
  • Workbook.Worksheets[sheetIndex] プロパティを使用して、マージが必要な2つのワークシートを取得します。シートインデックスはゼロから始まることに注意してください。
  • Worksheet.AllocatedRange プロパティを使用して、2つ目のワークシートの使用範囲を取得します。
  • Worksheet.Range[rowIndex,columnIndex] プロパティを使用して、最初のワークシートのターゲット範囲を指定します。行と列のインデックスは1に基づいていることに注意してください。
  • CellRange.Copy(destRange) メソッドを使用して、2つ目のワークシートの使用範囲を1つ目のワークシートのターゲット範囲にコピーします。
  • XlsWorksheet.Remove() メソッドを使用して、2番目のシートを削除します。
  • Workbook.SaveToFile() メソッドを使用して結果ファイルを保存します。
  • C#
  • VB.NET
using Spire.Xls;

namespace MergeExcelWorksheets
{
    class Program
    {
        static void Main(string[] args)
        {
            //Workbookクラスのオブジェクトを初期化する
            Workbook workbook = new Workbook();
            //Excelファイルをロードする
            workbook.LoadFromFile("Sample.xlsx");

            //最初のワークシートを取得する
            Worksheet sheet1 = workbook.Worksheets[0];
            //2つ目のワークシートを取得する
            Worksheet sheet2 = workbook.Worksheets[1];

            //2つ目のワークシートの使用範囲を取得する
            CellRange sourceRange = sheet2.AllocatedRange;
            //最初のワークシートのターゲット範囲を指定する
            CellRange destRange = sheet1.Range[sheet1.LastRow + 1, 1];

            //2つ目のワークシートの使用範囲を1つ目のワークシートのターゲット範囲にコピーする
            sourceRange.Copy(destRange);

            //2番目のシートを削除する
            sheet2.Remove();

            //結果ファイルを保存する
            workbook.SaveToFile("MergeWorksheets.xlsx", ExcelVersion.Version2013);
        }
    }
}
Imports Spire.Xls

Namespace MergeExcelWorksheets
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            'Workbookクラスのオブジェクトを初期化する
            Dim workbook As Workbook = New Workbook()
            'Excelファイルをロードする
            workbook.LoadFromFile("Sample.xlsx")

            '最初のワークシートを取得する
            Dim sheet1 As Worksheet = workbook.Worksheets(0)
            '2つ目のワークシートを取得する
            Dim sheet2 As Worksheet = workbook.Worksheets(1)

            '2つ目のワークシートの使用範囲を取得する
            Dim sourceRange As CellRange = sheet2.AllocatedRange
            '最初のワークシートのターゲット範囲を指定する
            Dim destRange As CellRange = sheet1.Range(sheet1.LastRow + 1, 1)

            '2つ目のワークシートの使用範囲を1つ目のワークシートのターゲット範囲にコピーする
            sourceRange.Copy(destRange)

            '2番目のシートを削除する
            sheet2.Remove()

            '結果ファイルを保存する
            workbook.SaveToFile("MergeWorksheets.xlsx", ExcelVersion.Version2013)
        End Sub
    End Class
End Namespace

C#/VB.NET:Excel ファイルをマージする方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 1547 times