
みなさん、こんにちは。日々、学校の課題や部活動のデータの整理に追われていませんか?
そんなとき、Excelの作業を自動化できたらとても便利ですよね。今回は、Pythonを使ってExcelファイル(.xlsx)を自在に読み書き・編集できる強力なライブラリ「openpyxl」をご紹介します。これを使えば、面倒なデータ入力やレポート作成も、一瞬で終わらせることができますよ。
openpyxlとは?
openpyxlは、Excel 2010以降の標準フォーマットである「.xlsx」ファイルを、Microsoft Excelがインストールされていない環境でも操作できるようにするPythonライブラリです。新規ファイルの作成から、既存ファイルの読み込み、セルの値や数式の編集、さらには罫線や背景色の設定、グラフの描画まで、Excelに関するほぼすべての操作をコードで表現できます。
ExcelのGUIを開かずに、バックグラウンドで高速に処理できるのがプログラマーっぽくて素敵ですよね。
openpyxlを使うメリット
- Excel不要で動作する:サーバーサイドのPython環境など、Excelソフト自体がインストールされていない環境でも、きれいなExcelファイルを生成できます。
- 直感的でわかりやすいAPI:シート、セル、行、列といったExcelの概念がそのままクラスやメソッドになっており、直感的にコードを書くことができます。
- デザインやグラフもサポート:ただデータを流し込むだけでなく、セルの色分けやフォントの変更、グラフの追加など、見栄えの良いレポートを自動作成できます。
数式も文字列としてセルに代入するだけで、Excelを開いたときに自動で計算してくれるんですよ。
簡単なサンプルコード
実際に、新規のExcelファイルを作成し、データを書き込んでスタイルを適用するコードを見てみましょう。
pip install openpyxlimport openpyxl
from openpyxl.styles import Font, PatternFill
# 1. 新規ワークブックの作成
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "成績表"
# 2. データの書き込み
data = [
["名前", "数学", "英語", "国語"],
["アリス", 85, 92, 78],
["ボブ", 76, 88, 82],
["チャーリー", 90, 85, 95]
]
for row in data:
ws.append(row)
# 3. 数式の追加(平均点を計算)
ws["A5"] = "平均"
ws["B5"] = "=AVERAGE(B2:B4)"
ws["C5"] = "=AVERAGE(C2:C4)"
ws["D5"] = "=AVERAGE(D2:D4)"
# 4. スタイルの適用(ヘッダーを太字&背景色設定)
header_font = Font(name="Meiryo UI", size=11, bold=True, color="FFFFFF")
header_fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")
for col in range(1, 5):
cell = ws.cell(row=1, column=col)
cell.font = header_font
cell.fill = header_fill
# 5. 保存
wb.save("grade_report.xlsx")
print("Excelファイルを作成しました!")
みーちゃんのワンポイント
openpyxlで大きなファイルを扱うときは、メモリ消費に注意しましょう。読み込み専用の read_only=True や書き込み専用の write_only=True モードを活用すると、メモリを大幅に節約できて動作も軽快になりますよ。
