💡
PythonでExcel操作の自動化Tips、OpenPyXLチートシート
公開
2024-08-27
更新
2025-02-27
文章量
約2417字
はじめに
OpenPyXL は、PythonでExcelファイル(.xlsx、.xlsmなど)を扱うための主要なライブラリです。
シートやセルの操作だけでなく、グラフの作成、書式設定など多岐にわたる機能が用意されています。
一方で、OpenPyXLでは一部制限事項(ピボットテーブルやスライサーへのフル対応など)もあるため、要件に合わせて使い分ける必要があります。
今回は、エンジニアがよく直面する場面を想定し、便利なTipsを多数紹介します。
Tips
インストール
$ pip install openpyxl
Excelファイルを開く
import openpyxl
wb = openpyxl.load_workbook("sample.xlsx")
# マクロ有のExcelファイルの場合は以下のオプションをつける
wb = openpyxl.load_workbook("sample.xlsm" , keep_vba=True)
Excelファイルを保存
wb.save("sample.xlsx")
シート名一覧を取得
wb.sheetnames
# => ["sheet_A", "sheet_B", "sheet_C"]
シートのコピー
ws_copy = wb.copy_worksheet(wb["sheet_A"])
ws_copy.title = "sheet_D"
セルの値を取得
wb["sheet_name"]["A1"].value
セルに値を代入
wb["sheet_name"]['A1'] = "NEW CELL VALUE"
wb["sheet_name"]['A1'] = "=SUM(B1:C1)"
セルの結合
wb["sheet_name"].merge_cells("A1:D3")
グラフの作成
chart = openpyxl.chart.BarChart()
chart.type = "bar"
chart.title = "Bar Chart"
# データの登録
src = openpyxl.chart.Reference(ws, min_col=1, min_row=1, max_col=5, max_row=4)
chart.add_data(src, titles_from_data=True)
# 項目名の設定
cat = openpyxl.chart.Reference(ws_copy, min_col=2, max_col=5, min_row=1)
chart.set_categories(cat)
chart.anchor = 'A8'
ws.add_chart(chart)
書式の設定
from openpyxl.styles import Font, Alignment, PatternFill
ws = wb["sheet_name"]
cell = ws["A1"]
cell.value = "フォーマット済みテキスト"
# フォント設定
cell.font = Font(name="Calibri", size=14, bold=True, italic=False, color="FF0000")
# 塗りつぶし設定
cell.fill = PatternFill(patternType="solid", fgColor="FFFF00")
# 文字配置設定
cell.alignment = Alignment(horizontal="center", vertical="center")
行や列の挿入・削除
ws.insert_rows(1) # シートの先頭に1行挿入
ws.delete_rows(3, 2) # 3行目から2行削除
ws.insert_cols(2) # 2列目に1列挿入
ws.delete_cols(5, 3) # 5列目から3列削除
行・列の幅や高さの調整
ws.column_dimensions['A'].width = 30
ws.row_dimensions[1].height = 40
グラフ作成
from openpyxl.chart import BarChart, Reference
ws = wb["sheet_name"]
chart = BarChart()
chart.type = "bar"
chart.title = "Bar Chart"
# データの登録
data = Reference(ws, min_col=1, min_row=1, max_col=5, max_row=4)
chart.add_data(data, titles_from_data=True)
# 項目名の設定
cat = Reference(ws, min_col=1, min_row=2, max_row=4)
chart.set_categories(cat)
# 配置(anchor)
chart.anchor = 'A8'
ws.add_chart(chart)
さいごに
n本記事では、OpenPyXLを使った基本的なExcel操作から、セル書式・条件付き書式など、エンジニア目線で押さえておくと便利なTipsを紹介しました。
OpenPyXLは使い勝手が良い一方で、スライサーやピボットテーブルなどの高度な機能の完全な維持・編集が難しいという制限があります。こうした機能が必須なケースでは、Microsoft Graph API や VBA など、OpenPyXL以外のアプローチの検討も必要です。
それでも、普段のデータ処理やレポート作成などでは、OpenPyXLを使うだけで非常に多くの場面をカバーできます。
Excelファイルの自動化や定型処理の置き換えの際に活用してみてください。