同じタイプまたはカテゴリの Excel ファイルをマージすることで、複数のファイルを同時に開くことを回避し、時間を節約できます。この記事では、Spire.XLS for .NET を使用して、C# および VB.NET でプログラムによって Excel ファイルをマージする方法を紹介します。 複数の Excel ファイルを1つのExcelファイルにマージする方法 Excel ファイル内の複数のワークシートのデータを1つのシートにマージする方法 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 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 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。