PythonでExcelをもっと簡単に!xlwingsを使った行・列操作の極意

Excel

Excelは日常業務において非常に便利なツールですが、大量のデータを扱う際、手作業での操作が非効率になることがあります。特に、行や列の操作は頻繁に行われるため、これを自動化できれば作業の効率が飛躍的に向上します。Pythonを使ってExcelを自動化できる「xlwings」は、そんなニーズに応える素晴らしいツールです。

この記事では、xlwingsを使った行・列の操作について詳しく解説していきます。基本的な使い方から応用的なテクニックまでを紹介し、PythonとExcelを使って効率的にデータを処理するための方法を学びましょう。

xlwingsの基本的な設定

ゆーや
ゆーや

xlwingsのインストールや基本操作は以下の記事から見てみてください!

行の操作方法

行の取得

まずは、指定した行のデータを取得する方法を見ていきます。例えば、1行目のデータを取得したい場合は以下のようにします。

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']


# 1行目のデータを取得
row_data = sheet.range('1:1').value
print(row_data)

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

1行目の値をすべて「配列」の形でとれるのはありがたいね!

行の挿入

sheet.apiでVBAでの操作ができるのでそれを使っていきます!

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']

# 2行目に新しい行を挿入
sheet.api.Rows(2).Insert()

# 保存
wb.save('都道府県情報.xlsx')

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

sheet.api.Rows(2).Insert() は、xlwings の api 属性を使って、ExcelのVBAオブジェクトモデルに直接アクセスし、2行目に行を挿入しています。

行の削除

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']

# 1行目を削除
sheet.range('1:1').delete()

# 保存
wb.save('都道府県情報.xlsx')

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

sheet.api.Rows(1).Delete() は、xlwings の api 属性を使って、ExcelのVBAオブジェクトモデルに直接アクセスし、1行目を削除しています。

列の操作方法

列の取得

列の操作も行と同様に行うことができます。例えば、B列のデータを取得する場合は以下のようになります。

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']


# B列のデータを取得
row_data = sheet.range('B:B').value

# 0番目から100番目だけ表示
print(row_data[0:100])
ゆーや
ゆーや

このコードは、B列のすべてのデータをリスト形式で返します。

アルファベットで指定すれば、列を取得できるんだね!

列の挿入

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']

# A列に列を追加
sheet.api.Columns(1).insert()

# 保存
wb.save('都道府県情報.xlsx')

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

列の挿入にもapiでVBAを使用するといいよ!

列の削除

列の削除も簡単に行えます。例えば、B列を削除するには以下のコードを使用します。

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']

# B列に列を削除
sheet.range('B:B').delete()

# 保存
wb.save('都道府県情報.xlsx')

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

都道府県の列が削除されているのがわかるね!

行と列の組み合わせ操作

行と列の操作を組み合わせて複雑な処理を行うこともできます。例えば、特定の範囲(行と列)のデータを取得したり、削除したりする場合です。

範囲のデータ取得

例えば、A1からC3までの範囲のデータを取得する場合は以下のようにします。

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']

# 範囲のデータ取得
range_data = sheet.range('A1:C3').value
print(range_data)

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

範囲になると2次元配列で取得ができるね!

範囲の削除

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']

# 範囲のデータ取得
sheet.range('A1:C3').delete()

# 保存
wb.save('都道府県情報.xlsx')

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

範囲を削除するとその分ずれることがわかるね!

xlwingsの応用:条件に基づく行・列の操作

実務においては、単純に行や列を挿入・削除するだけではなく、特定の条件に基づいて操作を行うことも多いです。例えば、特定の値を持つ行や列だけを削除するようなケースです。

特定の値を含む行を削除

import xlwings as xw

# Excelアプリケーションを起動
app = xw.App(visible=False)

# ブックを開く
wb = app.books.open('都道府県情報.xlsx')

# シート名でシートにアクセス
sheet = wb.sheets['都道府県一覧']

# シート全体を取得
data = sheet.range('A1').expand().value

# '北海道'を含む行を削除
for i, row in enumerate(data, 1):
    if '北海道' in row:
        sheet.range(f'{i}:{i}').delete()

# 保存
wb.save('都道府県情報.xlsx')

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

北海道を含む行だけ消えているのが確認できてるね!

まとめ

今回の記事では、xlwingsを使用してPythonからExcelの行や列を操作する方法について解説しました。行や列の取得、挿入、削除といった基本操作から、特定の条件に基づいてデータを操作する応用的な内容までを取り上げました。

Pythonを使ってExcel操作を自動化することで、業務効率が大幅に向上するだけでなく、ミスのない正確なデータ管理が可能になります。特に、定期的に行う操作や大量のデータ処理が必要な場合には、xlwingsのようなツールが非常に役立ちます。

ゆーや
ゆーや

xlwingsについてもっと知りたくなった方は

次の記事に挑戦してみてね!

コメント

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