PythonでExcel操作~iter_rows()について~
こんにちは。風助です。
今回はExcelファイルの特定の範囲からデータを取得できるiter_rows関数について書いていきます。OpenPyXLの関数の一つです。
今回の画像はみんなのフォトギャラリーから「メリカナデシコ」さんの作品です。
はじめに
iter_rows関数は各行ごとにデータを取得するのに便利な関数です。
この関数を使ってExcelデータを自分にとって使いやすい形に整えることも可能です。
どんなデータが必要でどのデータが不要なのかは人それぞれ。自分に必要な環境を自分で整えてしまえば仕事効率は上がります。理想の環境を整えていきましょう!
iter_rowsについて
iter_rows関数について解説していきます。
以下のページを参考にさせていただきました。
Googleの翻訳機能はすごいですね。では本題に入ります。
iter_rows関数はExcelデータの指定した範囲内でセルの値や座標を取得できます。といっても分かりづらいですよね。できるだけ簡単に解説します。
まずは引数について。
iter_rows関数は5つの引数を持ちます。
min_row:指定したい範囲の左上のセルの縦軸番号
max_row:指定したい範囲の右下のセルの縦軸番号
min_col:指定したい範囲の左上のセルの横軸番号
max_col:指定したい範囲の右下のセルの横軸番号
values_only:セルの値のみ返すか否か
この5つです。上4つは何となく分かりますよね。範囲を指定するのに必要なデータです。
int型、つまり数値での指定になります。1からはじまる数列です。0からではないので注意。
ちなみに指定がないとき、”A1”から”何かしらの操作(セルの罫線を変えるなど値が入っていなくても”操作”になるみたい)がされているセル”まですべてが範囲として指定されるようです。
minだけ指定しないときは”A1”のセルからmaxのセルまで。maxだけ指定しないときはminのセルから操作されているセルすべてが指定されます。
最後のvalues_onlyについてですが、bool値を代入します。デフォルトはFalse、つまりセルの値のみではなく座標も返します。Trueを代入するとセルの値のみ返ってきます。
次に返り値について。
返り値はジェネレーターの形になります。
ジェネレータってなんだよと思うかもしれませんが、私も完璧に理解しているとは言えないです。そのうちちゃんと解説します。今回はリストみたいなものと思ってもらえればいいです。ジェネレータの解説はメインではないので。
ジェネレータである以上何かしらのループを組んで使うのが一般的だと思います。例えばforループ。
for rows in ws.iter_rows(values_only=True):
for cell in rows:
print(cell)
このコードはExcelシート全体のセルの値のみを取得できます。あまり意味はないかもしれませんが、解説用なので許してね。
iter_rows関数は行ごとにデータを取得するのでセル単体のデータが欲しいならそこからもう一段掘り下げないといけません。まあforループを入れるだけなので大したことではないですが。
行ごとまるまるデータが欲しい人もいるでしょうし、そこは自分の求めるようにコードを組んでください。
iter_cols()について
よく似た関数にiter_cols()というものがあります。
基本的な使い方は同じ。違いは出力が列ごとってことだけです。用途に合わせて使い分けてみてください。
終わりに
薄い内容ですみません。本当に時間がなくて目の下にクマができていることにすら気が付きませんでした。たまたま鏡見てびっくり。自分では疲れていることに気づかないものですね。
今回はここまでになります。関数一つに絞って解説するとネタが尽きないし、何より勉強になるのでいいですね。こんな操作がしたいけどどんな関数が良いの?みたいな質問をいただけると嬉しいです。
Python関連の投稿をまとめているのでよろしければそちらも覗いていってください。
あと、このリンクを踏んで買い物していただけるとありがたいです。
それでは次回までさようなら。
この記事が気に入ったらサポートをしてみませんか?