C#でExcelのシート一覧を取得する (Open XML)

C#から Microsoft Office のエクセルファイルを操作したい事は意外とあると思います。

ここではOpen XML SDK というライブラリを使ってエクセルファイルを操作してみます。

 

 

エクセルは複数のシートで構成されています。

エクセルからデータを取得したい編集したい時には、まずシートを特定する必要があります。

ワークシートの一覧を取得する方法について解説します。


使用するクラス

DocumentFormat.OpenXml.Packaging.SpreadsheetDocument クラス

SpreadsheetDocument クラスは Excel ファイル全体を管理するクラスです。

Openメソッドを使って指定のファイルを開きましょう。

DocumentFormat.OpenXml.Sheets クラス

Sheets クラスは Excel ファイルの中にある複数のシートに関する情報を管理するクラスです。

各シートの情報を管理する Sheet クラスをまとめるクラスです。

DocumentFormat.OpenXml.Sheet クラス

シート情報を管理するクラスです。

シートの名称やIDなどを管理しています。


ワークシートの一覧を取得

 

以下のサンプルではエクセルファイル内のシートの名称とIDをコンソールへ書き出しています。

using System;
using System.Data;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            var fileName = @"c:\myspace\test.xlsx";

            using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, true))
            {
                Sheets sheets = document.WorkbookPart.Workbook.Sheets;
                foreach (Sheet sheet in sheets.Elements<Sheet>())
                {
                    System.Console.Write("ID=" + sheet.Id);
                    System.Console.Write(",NAME=" + sheet.Name);
                    System.Console.WriteLine();
                }
            }
        }
    }
}

シートの一覧は Sheets オブジェクトで管理されています。

SpreadsheetDocument オブジェクトの WorkbookPart プロパティの Workbook プロパティから、 Sheets プロパティを取得する事ができます。

 

関連記事