この構文は、openpyxl を使って Excel シートを行単位で走査するときの典型的な書き方です。
-
sheet.iter_rows(...)
は、指定したシート内の全行を「イテレータ」として返します。
-
enumerate(...)
を使うことで、row_idx
に行番号(0始まり)を格納しつつ、row
として実際の行データを取り出すことができます。
-
引数の values_only=False
を指定すると、
たとえば values_only=False
で書いておけば、次のようなアクセスが可能になります。
for row_idx, row in enumerate(sheet.iter_rows(values_only=False)):
# row は Cell オブジェクトのタプル
for cell in row:
# セルの値: cell.value
# セルの座標: cell.coordinate
# セルの背景色、フォントなどの書式情報にもアクセス可能
pass
一方、単純にセルの中身だけを欲しいときは values_only=True とすることが多いです。すると row は「セルの値のタプル」になり、シンプルに
for row_idx, row_values in enumerate(sheet.iter_rows(values_only=True)):
# row_values は (値1, 値2, 値3, ...) のタプル
# 書式情報や座標等は参照できない
pass
のように書けます。
まとめ:
用途に応じて切り替えて使ってください。
(文責:ChatGPT o1)