【完全独学Python】openpyxlでExcelの最終行を取得する方法4選!

Excel

この記事でわかること

  • 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)から上に向かって値が入っているを探せば、

書式が入っていても、途中で空白が入っていても大丈夫だね!

コメント

タイトルとURLをコピーしました