Home » Python » OpenPyXLの使い方 » OpenPyXLでセル範囲を文字列で指定してCellを順番に取得する

OpenPyXLでセル範囲を文字列で指定してCellを順番に取得する

動作検証バージョン:Windows 10 Pro(64-bit)+ Python 3.11.1(64-bit) + OpenPyXL 3.0.10

検索キーワード「python openpyxl cell 2重ループ」をきっかけにして、さまざまな書き方をご紹介してきました。

セル範囲を文字列で指定した2重ループでも、Cellオブジェクトを順番に取得できます。

[スポンサードリンク]

セル範囲を文字列で指定してCellを順番に取得するサンプル

Cドライブtempフォルダーに存在するsample.xlsxブックの「Sheet1」ワークシートのA1:D2セルに、これまでと同様に下図のようなデータを入力しておいてから、

以下のスクリプトを実行してください。

import openpyxl as xl

bk = xl.load_workbook(r'c:\temp\sample.xlsx')
ws = bk['Sheet1']

for row in ws['A1:D2']:
    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を順番に取得する

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

検索


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

.