OpenPyXLは、PythonでExcelファイルを操作するための非常に強力なライブラリです。本記事では、実際の業務や日常作業に役立つ実用的なスクリプト例と、効率的なデータ操作方法を紹介します。
1. Excelファイルのデータを一括修正するスクリプト
例えば、売上データが記載されたExcelファイルで、特定の値を増減させる必要がある場合に役立つスクリプトです。
実例:価格データに10%の増加を適用
from openpyxl import load_workbook
# ファイルを読み込む
workbook = load_workbook('sales_data.xlsx')
sheet = workbook['Sheet1']
# 特定の列に対して値を修正
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=3, max_col=3):
for cell in row:
cell.value = round(cell.value * 1.1, 2) # 10%増加
# 修正したデータを保存
workbook.save('sales_data_updated.xlsx')
print("データの更新が完了しました")
ポイント
iter_rows: 行単位でデータを効率よく処理します。cell.value: 値を動的に変更可能です。
2. 条件に基づいて行を削除するスクリプト
データクレンジングの一環として、特定の条件を満たす行を削除することがよくあります。
実例:売上が0の行を削除
from openpyxl import load_workbook
# ファイルを読み込む
workbook = load_workbook('sales_data.xlsx')
sheet = workbook['Sheet1']
# 条件に一致する行を削除
rows_to_delete = []
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row):
if row[2].value == 0: # 3列目(売上)が0の場合
rows_to_delete.append(row[0].row)
for row_num in sorted(rows_to_delete, reverse=True):
sheet.delete_rows(row_num)
# 保存
workbook.save('sales_data_cleaned.xlsx')
print("条件に一致する行を削除しました")
ポイント
delete_rows: 指定した行を削除します。- 条件に一致する行番号をリストに格納し、逆順に削除することでエラーを防ぎます。




