前回の投稿 028 Excelファイルから測定機器をコントロールするデータを読み込む(その2)で,Excelファイルのシートを開くところまで紹介しました.
今回は,実際にシートから行(Row)毎にデータを読み込むiter_rows関数の使い方について紹介します.
iter_rows関数の正式は仕様はこちらをご覧下さい.
各キーワード引数を説明すると,
min_col: 読み込むデータの開始列番号
min_row: 読み込むデータの開始行番号
max_col: 読み込むデータの終了列番号
max_row: 読み込むデータの終了行番号
values_only: セル自身ではなくセルの値を取得するかどうか
です.
行番号および列番号は1から始まることに注意して下さい(0から始まるインデックスとは異なります).
min_colキーワード引数などを使って,読み込むデータの行と列の範囲を指定しない(省略する)と,データが存在するセルを自動で認識してデータを読み込むのですが,Excelのシートは,見た目でデータ埋まっているセルだけでなく余分セルが含まれているケースがあり,これらの余分なセルのデータを読み込むのを避けるため,(読み込むデータの範囲が判明しているのであれば)少なくとも最後の行および列番号は指定した方が良いです.
(確認してみたい人は,コントロールGを押下し,「最後のセル」にジャンプして確認してみて下さい.セルの削除などを繰り返したシートは,データが埋まっていないセルが最後のセルとなっているケースが稀にあります)
values_onlyキーワード引数は,必ずTrueを設定して下さい.設定しないと,セルの値ではなく,セル自身を取得してしまう(これは別の用途になります)ので困ったことになります.
行(Row)毎にデータを読み込むには,forループを使って下記のようにします.
for row in ws.iter_rows(min_col=1, min_row=1, max_col=2, max_row=1000, values_only=True):
# 変数rowに行(Row)毎のデータがタプルで代入されている
上記に示すように,forループの中(上記ではコメント行)で,変数rowに行(Row)毎のデータがタプルで代入されているので,所望の列のデータを取り出して処理すれば良いです.
(タプルとは値が変更できないリストです.リストと同様にインデックスを使って列毎のデータを取り出すことができます)
load_workbook関数を使ってオープンしたExcelファイルは,データを読み終わった後で,close関数を使ってクローズして下さい.
wb.close()
以上で,Excelファイルから測定機器をコントロールするデータを読み込む手順の紹介を終わります.
0 件のコメント:
コメントを投稿