Home » Python » xlwingsの使い方 » xlwingsでシートの枚数を取得する

xlwingsでシートの枚数を取得する

動作検証バージョン:Windows 10 Pro(64-bit)+ 64bit Excel(バージョン2302 ビルド16130.20218 キック実行)+ Python 3.11.1(64-bit) + xlwings 0.29.1

「python xlwings シート数」
といった検索で時折アクセスがあります。

表計算ソフトExcelを操作するPythonの外部ライブラリxlwingsを使って、いずれかのブックに含まれるシートの枚数を取得するには、どのようなコードを書けばいいのかを調べていらしたのでしょう。

xlwingsでワークシートの枚数を取得する

Cドライブtempフォルダーにsamp.xlsxブックを用意しておいてから、以下のスクリプトを実行してください。

import xlwings as xw

bk = xw.Book(r'c:\temp\samp.xlsx')
print(bk.sheets.count)

xlwingsの、Bookオブジェクトに用意されているsheetsプロパティで取得できるSheetsコレクションのCountプロパティを使うとSheetオブジェクトの個数(ワークシートの枚数)を取得できます。

xlwingsでグラフシートは無視される

ただし、グラフシートが含まれるブックの場合、上記のBook.sheets.countプロパティでは、正しいシート枚数を取得できません。

samp.xlsxブックが上図のように、ワークシートが3枚、グラフシートが1枚のときに、先のスクリプトを実行するとワークシートのみの枚数「3」が出力されます。

xlwingsのBookクラスに用意されているsheetsプロパティは、_xlwindows.pyモジュールで、以下のように定義されているためです。

@property
def sheets(self):
    return Sheets(xl=self.xl.Worksheets)

xlwings.Book.sheetsプロパティは、ワークシートを表すWorksheetオブジェクトのみを要素として含むSheetsコレクションを返す、Excel VBAのApplication.Worksheetsプロパティを呼んでいるのです。

xlwingsですべてのシートの枚数を取得する

グラフシートも含むブックで全シートの枚数を取得したい場合は、以下のようなスクリプトです。

import xlwings as xw

bk = xw.Book(r'c:\temp\samp.xlsx')
print(bk.api.Sheets.Count)

Bookオブジェクトのapiプロパティを経由して、直接Excelのオブジェクトやプロパティを利用すれば、グラフシートも含む全シートの枚数を取得できます。

api.Worksheets.Countの場合

なお、Book.apiプロパティを経由したコード

print(bk.api.Worksheets.Count)

を実行すると、xlwingsのSheets.countプロパティを使ったコード

print(bk.sheets.count)

と同様、グラフシートを含まないワークシートの枚数を出力できます。

api.Charts.Countの場合

また、

print(bk.api.Charts.Count)

で、グラフシートの枚数を出力できます。

最終更新日時:2023-10-13 12:14

[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsでシートの枚数を取得する

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.