動作検証バージョン:Windows 10 Pro(64-bit)+ Python 3.11.1(64-bit) + OpenPyXL 3.0.10
検索キーワード「python openpyxl cell 2重ループ」をきっかけにして、さまざまな書き方をご紹介してきました。
- Worksheetオブジェクトのcell()メソッドを使う方法
- Worksheetオブジェクトのiter_rows()メソッドやiter_cols()メソッドを使う方法
- Worksheetオブジェクトのrows属性やcolumns属性を使う方法
セル範囲を文字列で指定した2重ループでも、Cellオブジェクトを順番に取得できます。
[スポンサードリンク]
セル範囲を文字列で指定してCellを順番に取得するサンプル
Cドライブtempフォルダーに存在するsample.xlsxブックの「Sheet1」ワークシートのA1:D2セルに、これまでと同様に下図のようなデータを入力しておいてから、
以下のスクリプトを実行してください。
import openpyxl as xl
for cel in row:
print(cel.value)
bk = xl.load_workbook(r'c:\temp\sample.xlsx')
ws = bk['Sheet1']
for cel in row:
print(cel.value)
実行すると、Worksheet.iter_rows()メソッドを使った、
for row in ws.iter_rows():
for cel in row:
print(cel.value)
や、Worksheet.rows属性を使った
for row in ws.rows:
for cel in row:
print(cel.value)
のときと同様に、
あ
い
う
え
春
夏
秋
冬
と出力されます。
セル範囲を文字列で指定した場合もiter_rows()が呼ばれている
上記の、
for row in ws['A1:D2']:
のようにセル範囲を示す文字列を角かっこ [] の中に指定した場合、Worksheetオブジェクトの特殊メソッド・ダンダーメソッド__getitem__()が呼ばれています。
そのWorksheet.__getitem__()メソッドでは、
return tuple(self.iter_rows(min_row=min_row, min_col=min_col,
max_row=max_row, max_col=max_col))
と定義されています。
結局、Worksheet.iter_rows()メソッドが呼ばれているだけです。
[スポンサードリンク]
Home » Python » OpenPyXLの使い方 » OpenPyXLでセル範囲を文字列で指定してCellを順番に取得する