初心者でもわかる!xlwingsでExcelの最終行を簡単に取得する方法

Excel

Excelを使ってデータを管理する際、シート内でどの行までデータが入力されているのか、つまり「最終行」を取得することはよくある操作です。これにより、プログラムが自動でデータの範囲を把握し、次の処理を効率よく進めることができます。PythonからExcelを操作する際には、xlwings ライブラリを使用することで、この最終行の取得を簡単に行うことが可能です。

この記事では、xlwings を使って最終行を取得する方法を、具体的なコード例を交えながら紹介します。初心者でもわかりやすいように、丁寧に解説していきます。

最終行とは

最終行とは、シートの中でデータが入力されている最後の行のことです。Excelでは、データがどの範囲まで入力されているかを把握するために、最後にデータが入力されている行を取得するのが一般的です。例えば、A列にデータが100行まで入力されている場合、最終行は100となります。

最終行を取得することで、次の空白行にデータを追加したり、データ範囲を動的に操作することができるようになります。

ゆーや
ゆーや

Excel操作ではなくてはならない存在だね!

xlwingsで最終行を取得する基本的な方法

xlwings を使うと、Excelシートの最終行を簡単に取得できます。sheet.range() メソッドや api を使ってシートのデータ範囲にアクセスし、最終行を特定します。

最終行を取得するコード

対象ファイル

ゆーや
ゆーや

次のようなシートを用意します!

サンプルコード

import xlwings as xw

# Excelを起動
app = xw.App(visible=False)

# Excelファイルを読み込み
wb = app.books.open('sample.xlsx')

# シートを選択
sheet = wb.sheets[0]

# 最終行を取得
last_row = sheet.range('A1').end('down').row

print(f'最終行は: {last_row}')

# クローズ
wb.close()
app.quit()
ゆーや
ゆーや

この方法では、A1 からデータが続く限り下に移動して最終行を特定しますが、途中に空白行がある場合にはその手前で止まります。つまり、空白行を飛び越えることはありません!

空白行を含む最終行の取得

対象ファイル

ゆーや
ゆーや

次のようなシートを用意します!

サンプルコード

import xlwings as xw

# Excelを起動
app = xw.App(visible=False)

# Excelファイルを読み込み
wb = app.books.open('sample.xlsx')

# シートを選択
sheet = wb.sheets[0]

# A列の最終行を取得する
last_row = sheet.api.Cells(sheet.api.Rows.Count, 1).End(xw.constants.Direction.xlUp).Row

print(f'最終行は: {last_row}')

# クローズ
wb.close()
app.quit()
ゆーや
ゆーや

sheet.api.Cells(sheet.api.Rows.Count, 1): A列の最終行を取得するために、ExcelのAPIを利用して、最下行(1048576行目)から検索を始めます。

ゆーや
ゆーや

.End(xw.constants.Direction.xlUp): xlUp を使って下から上に向かってデータを探し、最初に見つかったデータの行を取得します。これにより、空白行が途中にあっても無視され、最後のデータが入力された行を取得します。

シート全体で最終行を取得する方法

特定の列だけでなく、シート全体の最終行を取得したい場合もあるでしょう。この場合、ExcelのネイティブAPIを利用して、シート全体の最終行を取得することができます。

対象ファイル

ゆーや
ゆーや

次のようなシートを用意します!

サンプルコード

import xlwings as xw

# Excelを起動
app = xw.App(visible=False)

# Excelファイルを読み込み
wb = app.books.open('sample.xlsx')

# シートを選択
sheet = wb.sheets[0]

# シート全体の最終行を取得
last_row = sheet.api.UsedRange.Rows.Count
print(f'シート全体の最終行は: {last_row}')

# クローズ
wb.close()
app.quit()
ゆーや
ゆーや

シートの最終行を取って、そこまで罫線を引くみたいな使い方は結構便利だよ!

最終行を使ってデータを追加する方法

# 上記の情報で
# A列の最終行を取得
last_row = sheet.range('A1').end('down').row

# 最終行の次に新しいデータを追加
sheet.range(f'A{last_row + 1}').value = '新しいデータ'

# クローズ
wb.close()
app.quit()
ゆーや
ゆーや

この例はA列であることを忘れないでね!

他の列だったら f’のあとのAを列のアルファベットに変えてみよう!

まとめ

この記事では、xlwings を使用してExcelシートの最終行を取得する方法について説明しました。最終行を取得することで、データの動的な操作や自動更新が可能になります。特定の列やシート全体の最終行を取得する方法、そしてその最終行を使って新しいデータを追加する方法も紹介しました。

これらを利用して、日々の業務をラクにしていきましょう!

コメント

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