「openpyxl」でExcelのワークシート上で値が設定されている最終行・最終列を取得します。
最終行・最終列は、Worksheet
オブジェクトのmax_row
, max_column
関数より取得可能です。
最終行/最終列を取得するサンプルコード
さっそく、max_row
と max_column
関数でシート上に設定されているデータの最終行と最終列を取得するサンプルコードを見てみましょう。
import openpyxl
wb = openpyxl.load_workbook('path/to/file.xlsx')
ws = wb.worksheets[0]
print("最終行=%d, 最終列=%d" % (ws.max_row, ws.max_column)
`max_row`と`max_column`が返す値は、1ベース(1から始まる値)のインデックスであることにも注意しておきましょう。
max_row/max_columnが最終行(列)の範囲とは?
max_row
とmax_column
が返す最終行(列)のインデックスの「最終」とは、具体的にどの範囲を表すのでしょうか? 公式ページのAPIドキュメントでは、max_row
とmax_column
について次のように書かれています。
max_column
:データを含む最大列インデックス(1ベース)
max_row
:データを含む最大行インデックス(1ベース)
これだと、数値などの値が設定されているセルの最終行(列)なのか、書式だけが設定されているセルも含めて最終行(列)として数えるのか分からないですが、答えは書式が設定されているセルも含めた最終行(列)のインデックスが返ります。
少し実験してみます。
最終行(列)の範囲が書式を含むか試す
次のイメージのように、値が10行 × 3列で設定されているExcelファイルを用意します。さらに背景色を設定した書式のみのセルを 12行目と5列目に用意します。
では、このExcelファイルに対し、max_row
とmax_column
で最終行(列)を取得してみます。
print("最終行=%d, 最終列=%d" % (ws.max_row, ws.max_column)
結果は次のようになり、max_row
とmax_column
は書式のみが設定されたセルも含めた最終行(列)を返す関数であることが分かります。
実行結果
----------------------------
最終行=12, 最終列=6
まとめ
openpyxl のmax_row
とmax_column
関数でExcelワークシート上に設定された値の最終行と最終列を取得する方法について解説しました。このような関数を活用することで、PythonでExcelファイルの処理を自動化して、仕事の効率化を目指したいですね。
0 件のコメント:
コメントを投稿