次の方法で共有


スプレッドシート ドキュメント内のワークシートの一覧を取得する

このトピックでは、Open XML SDK for Office のクラスを使用して、ドキュメントを Excel に読み込まずに、Microsoft Excel ブック内のワークシートの一覧をプログラムで取得する方法について説明します。 このタスクを示すメソッド GetAllWorksheets 例が含まれています。


GetAllWorksheets メソッド

次のコードに示す GetAllWorksheets メソッドを使用して、ブック内のワークシートの一覧を取得できます。 GetAllWorksheets メソッドは、1 つのパラメーター (調べるファイルのパスを示す文字列) を受け取ります。

Sheets? sheets = GetAllWorksheets(args[0]);

メソッドは指定したブックで動作し、 Sheets オブジェクトのインスタンスを返します。そこから、各 Sheet オブジェクトへの参照を取得できます。


GetAllWorksheets メソッドを呼び出す

GetAllWorksheets メソッドを呼び出すには、次のコードに示すように、必要な値を渡します。

Sheets? sheets = GetAllWorksheets(args[0]);

if (sheets is not null)
{
    foreach (Sheet sheet in sheets)
    {
        Console.WriteLine(sheet.Name);
    }
}

コードの動作のしくみ

サンプル メソッド GetAllWorksheets、ブックの Sheets コレクションへの参照を含む変数を作成します。 処理の最後に、 メソッドは 変数を返します。この変数には、 Sheets コレクションへの参照が含まれます。また、シートがない場合は null/Nothing されます (これは整形式のブックでは発生しません)。

Sheets? theSheets = null;

その後、コードはドキュメントを読み取り専用モードで開き、 WorkbookPartへの参照を取得することで続行されます。

using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false))
{
    theSheets = document?.WorkbookPart?.Workbook.Sheets;

Workbook オブジェクトにアクセスするには、WorkbookPartから Workbook プロパティの値を取得し、WorkbookSheets プロパティからSheets オブジェクトへの参照を取得します。 Sheets オブジェクトには、メソッドの戻り値を提供するSheet オブジェクトのコレクションが含まれています。

theSheets = document?.WorkbookPart?.Workbook.Sheets;

サンプル コード

C# と Visual Basic の完全な GetAllWorksheets コード サンプルを次に示します。

static Sheets? GetAllWorksheets(string fileName)
{
    Sheets? theSheets = null;

    using (SpreadsheetDocument document = SpreadsheetDocument.Open(fileName, false))
    {
        theSheets = document?.WorkbookPart?.Workbook.Sheets;
    }

    return theSheets;
}

関連項目