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 日間有効な一時ライセンスを取得してください。