「python xlwings シート数」
といった検索で時折アクセスがあります。
表計算ソフトExcelを操作するPythonの外部ライブラリxlwingsを使って、いずれかのブックに含まれるシートの枚数を取得するには、どのようなコードを書けばいいのかを調べていらしたのでしょう。
xlwingsでワークシートの枚数を取得する
Cドライブtempフォルダーにsamp.xlsxブックを用意しておいてから、以下のスクリプトを実行してください。
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ですべてのシートの枚数を取得する
グラフシートも含むブックで全シートの枚数を取得したい場合は、以下のようなスクリプトです。
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)
で、グラフシートの枚数を出力できます。
- xlwingsのBook.apiを経由して全シート名を取得する
- 『Excel VBAユーザーのためのPythonプログラミング入門』発売に
- 拙著で紹介しているBooks/Bookが持つプロパティとメソッドの一覧
- 拙著で紹介しているSheets/Sheetが持つプロパティとメソッドの一覧
最終更新日時:2023-10-13 12:14
Home » Python » xlwingsの使い方 » xlwingsでシートの枚数を取得する