Excel のワークシートに大量のデータがある場合、特定の条件に基づいてそれを複数の Excel ファイルに分割することは非常に良い選択です。ワークシートをより小さく、管理しやすいファイルに分割することで、作業効率を向上させ、データ分析を容易にすることができます。この記事では、Spire.XLS for .NET を使用して Excel でワークシートを複数のファイルに分割する方法について説明します。 Spire.XLS for .NET をインストールします まず、Spire.XLS for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。 PM> Install-Package Spire.XLS Excel でワークシートを複数のファイルに分割する Spire.XLS for .NET が提供する Worksheet.Copy (CellRange sourceRange, CellRange destRange) メソッドを使用すると、指定したセル範囲を元の Excel ファイルから新しい Excel ファイルにコピーすることで、ワークシートを分割できます。以下は詳細な手順です。 Workbook インスタンスを作成します。 Workbook.LoadFromFile() メソッドを使用して「sample.xlsx」を読み込みます。 Workbook.Worksheets[] プロパティを使用して特定のワークシートを取得します。 Worksheet.Range プロパティを使用して、タイトル行と指定されたセル範囲を取得します。 新しい Workbook インスタンスを作成し、最初のワークシートを取得します。 Worksheet.Copy(CellRange sourceRange, CellRange destRange) メソッドを使用して、タイトル行と指定したセル範囲をそのシートにコピーします。 元のブックから新しいブックに列幅をコピーし、Workbook.SaveToFile() メソッドを使用して新しいブックを Excel ファイルに保存します。 別の Workbook インスタンスを作成し、上記の手順を繰り返して、タイトル行と指定したセル範囲をそのブックにコピーします。 新しいブックを別の Excel ファイルに保存します。 C# VB.NET using Spire.Xls; namespace splitworksheet { class Program { static void Main(string[] args) { //Workbook インスタンスを作成する Workbook originalBook= new Workbook(); //「sample.xlsx」を読み込む originalBook.LoadFromFile("sample.xlsx"); //最初のワークシートを取得する Worksheet sheet = originalBook.Worksheets[0]; //タイトル行を取得する CellRange headerRow = sheet.Range[1, 1, 1,5]; //2つのセル範囲を取得する CellRange range1 = sheet.Range[2, 1, 6, sheet.LastColumn]; CellRange range2 = sheet.Range[7, 1, sheet.LastRow, sheet.LastColumn]; //新しいWorkbook インスタンスを作成する Workbook newBook1 = new Workbook(); //最初のワークシートを取得する Worksheet newSheet1 = newBook1.Worksheets[0]; //タイトル行とRange1をそのワークシートにコピーする sheet.Copy(headerRow, newSheet1.Range[1, 1]); sheet.Copy(range1, newSheet1.Range[2, 1]); //元のワークブックから列幅を新しいワークブックにコピーする for (int i = 0; (i < sheet.LastColumn); i++) { newBook1.Worksheets[0].SetColumnWidth(i + 1, sheet.GetColumnWidth(i + 1)); } //新しいワークブックをExcelファイルに保存する newBook1.SaveToFile("生産部.xlsx", ExcelVersion.Version2016); //別の新しいWorkbook インスタンスを作成する Workbook newBook2 = new Workbook(); //最初のワークシートを取得する Worksheet newSheet2 = newBook2.Worksheets[0]; //タイトル行とRange2をそのワークシートにコピーする sheet.Copy(headerRow, newSheet2.Range[1, 1]); sheet.Copy(range2, newSheet2.Range[2, 1]); //元のワークブックから列幅を新しいワークブックにコピーする for (int i = 0; (i < sheet.LastColumn); i++) { newBook2.Worksheets[0].SetColumnWidth(i + 1, sheet.GetColumnWidth(i + 1)); } //新しいワークブックを別のExcelファイルに保存する newBook2.SaveToFile("IT部門.xlsx", ExcelVersion.Version2016); } } } Imports Spire.XLS Namespace splitworksheet Class Program Private Shared Sub Main(ByVal args() As String) 'Workbook インスタンスを作成する Dim originalBook As Workbook = New Workbook '「sample.xlsx」を読み込む originalBook.LoadFromFile("sample.xlsx") '最初のワークシートを取得する Dim sheet As Worksheet = originalBook.Worksheets(0) 'タイトル行を取得する Dim headerRow As CellRange = sheet.Range(1, 1, 1, 5) '2つのセル範囲を取得する Dim range1 As CellRange = sheet.Range(2, 1, 6, sheet.LastColumn) Dim range2 As CellRange = sheet.Range(7, 1, sheet.LastRow, sheet.LastColumn) '新しいWorkbook インスタンスを作成する Dim newBook1 As Workbook = New Workbook '最初のワークシートを取得する Dim newSheet1 As Worksheet = newBook1.Worksheets(0) 'タイトル行とRange1をそのワークシートにコピーする sheet.Copy(headerRow, newSheet1.Range(1, 1)) sheet.Copy(range1, newSheet1.Range(2, 1)) '元のワークブックから列幅を新しいワークブックにコピーする Dim i As Integer = 0 While (i < sheet.LastColumn) newBook1.Worksheets(0).SetColumnWidth(i + 1, sheet.GetColumnWidth(i + 1)) i += 1 End While '新しいワークブックをExcelファイルに保存する newBook1.SaveToFile("生産部.xlsx", ExcelVersion.Version2016) '別の新しいWorkbook インスタンスを作成する Dim newBook2 As Workbook = New Workbook '最初のワークシートを取得する Dim newSheet2 As Worksheet = newBook2.Worksheets(0) 'タイトル行とRange2をそのワークシートにコピーする sheet.Copy(headerRow, newSheet2.Range(1, 1)) sheet.Copy(range2, newSheet2.Range(2, 1)) '元のワークブックから列幅を新しいワークブックにコピーする Dim i As Integer = 0 While (i < sheet.LastColumn) newBook2.Worksheets(0).SetColumnWidth(i + 1, sheet.GetColumnWidth(i + 1)) i += 1 End While '新しいワークブックを別のExcelファイルに保存する newBook2.SaveToFile("IT部門.xlsx", ExcelVersion.Version2016) End Sub End Class End Namespace 一時ライセンスを申請する 結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。 にお問い合わせ、30 日間有効な一時ライセンスを取得してください。