この記事でわかること
- openpyxlでExcelの最終行の取得方法がわかる!
- 場面に合ったExcelの最終行の取得方法の決定ができる!
- 実際に動くサンプルコードが手に入る!

ゆーや
openpyxlというモジュールを使っていくよ!
インストールなどは以下の記事を見てね!
Excelの最終行を取得する方法
まず、読み込むファイルは、以下のようなファイルを想定します!


ゆーや
画像のような状態であれば、「1027」という数値が取れれば良いね!
①max_row
サンプルコード
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active
# シートの最終行を取得
last_row = sheet.max_row
print(f'最終行は: {last_row}')


ゆーや
無事、正しい値が取れたね!
ただし…
値がずれてしまう場合
試しに1028行目に書式(今回は中央揃え)を入れて保存してみます!



ゆーや
チョットした押し間違いで計算が狂っている可能性があります!
心配な方は次の方法を使ってみよう!
②上から値が入っている行をカウントしていく
サンプルコード
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active
# データが存在する最終行を見つける
last_row = 0
for row in sheet.iter_rows(values_only=True):
if any(cell is not None for cell in row):
last_row += 1
print(f'データが存在する最終行は: {last_row}')


ゆーや
書式を入れたまま計算しても正しく計算できます!
ただし…
値がずれてしまう場合
連続した値の途中に空白を挟むとします!



ゆーや
値の入っている行をカウントしているので
途中に空白があるような場合はアウト!
このような状況でカウントしたい人は次の方法へ!
③enumurateとiter_rowsを組み合わせる
サンプルコード
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active
# データが存在する最終行を見つける
last_row = 0
for index, row in enumerate(sheet.iter_rows(values_only=True), start=1):
if any(cell is not None for cell in row):
last_row = index
print(f'データが存在する最終行は: {last_row}')


ゆーや
カウントしていくのではなく、indexとして持っておけば空白は関係ないね!
【応用】最大行数から上に向かって探す
サンプルコード
import openpyxl
# Excelファイルを読み込む
workbook = openpyxl.load_workbook('example.xlsx')
sheet = workbook.active
# 最大行を取得
max_row = sheet.max_row
# 最大行から上に向かってデータが存在する行を探す
for row_num in range(max_row, 0, -1):
row = sheet[row_num]
if any(cell.value is not None for cell in row):
last_row = row_num
break
print(f'データが存在する最終行は: {last_row}')


ゆーや
最大行(max_row)から上に向かって値が入っているを探せば、
書式が入っていても、途中で空白が入っていても大丈夫だね!
コメント