[openpyxl] Excelで値が設定されている最終行・最終列を取得する方法

2021年3月29日月曜日

Python

t f B! P L

「openpyxl」でExcelのワークシート上で値が設定されている最終行・最終列を取得します。
最終行・最終列は、Worksheetオブジェクトのmax_row, max_column関数より取得可能です。

最終行/最終列を取得するサンプルコード

さっそく、max_rowmax_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_rowmax_columnが返す最終行(列)のインデックスの「最終」とは、具体的にどの範囲を表すのでしょうか? 公式ページのAPIドキュメントでは、max_rowmax_columnについて次のように書かれています。

max_column:データを含む最大列インデックス(1ベース)
max_row:データを含む最大行インデックス(1ベース)

これだと、数値などの値が設定されているセルの最終行(列)なのか、書式だけが設定されているセルも含めて最終行(列)として数えるのか分からないですが、答えは書式が設定されているセルも含めた最終行(列)のインデックスが返ります。

少し実験してみます。

最終行(列)の範囲が書式を含むか試す

次のイメージのように、値が10行 × 3列で設定されているExcelファイルを用意します。さらに背景色を設定した書式のみのセルを 12行目と5列目に用意します。

では、このExcelファイルに対し、max_rowmax_columnで最終行(列)を取得してみます。

print("最終行=%d, 最終列=%d" % (ws.max_row, ws.max_column)

結果は次のようになり、max_rowmax_columnは書式のみが設定されたセルも含めた最終行(列)を返す関数であることが分かります。

実行結果
----------------------------
最終行=12, 最終列=6

まとめ

openpyxl のmax_rowmax_column関数でExcelワークシート上に設定された値の最終行と最終列を取得する方法について解説しました。このような関数を活用することで、PythonでExcelファイルの処理を自動化して、仕事の効率化を目指したいですね。

スポンサーリンク

QooQ