チュートリアル

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

チュートリアル».NET»Spire.XLS for .NET»文書操作»C#/VB.NET:Excel でワークシートを複数のファイルに分割する方法
2023-08-28

C#/VB.NET:Excel でワークシートを複数のファイルに分割する方法

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

C#/VB.NET:Excel でワークシートを複数のファイルに分割する方法

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

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

Read 1087 times