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についてもっと知りたくなった方は
次の記事に挑戦してみてね!
コメント