7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonでExcel操作を自動化しよう!openpyxl & pandas (入門編)

Last updated at Posted at 2025-12-26

毎日繰り返されるExcelのコピペ作業、データの集計、定型レポートの作成。。といった作業が面倒臭いと思ったことはありませんか?

pythonを用いれば、それらの作業をコマンド1つで終わらせることが可能です。

本記事では、PythonでExcelを操るための「代表的なライブラリ」と、明日から使える「基本操作」を解説します!

🎯この記事はこんな人におすすめ

  • PythonでExcel操作を自動化してみたい方
  • 手作業の単純業務から解放されたい方
  • pandas や openpyxl という名前は聞いたことがあるけれど、使い方が分からない方

PythonでExcelを操作する方法の全体像

PythonからExcelを操作する方法はいくつかあり、 用途によって使い分けることが重要です。

ライブラリ 主な用途
openpyxl Excel(.xlsx)の読み書き・書式操作
pandas データ分析・集計
xlrd / xlwt 旧形式(.xls)の読み書き
xlwings Excelアプリを直接操作

本記事では、openpyxl と pandas を中心に解説します。

事前準備

ライブラリのインストール

まずは必要なライブラリをインストールしましょう。
ターミナル(またはコマンドプロンプト)で以下のコマンドを実行します。

pip install openpyxl pandas

openpyxlでExcelを操作する

openpyxl は、Excelファイルを「セル単位」で細かく操作できるライブラリです。
「A1セルに文字を入れる」「文字を赤くする」といった、人間がExcelで行う操作をそのままプログラムで書くイメージです。

Excelファイルを新規作成する

from openpyxl import Workbook

# 1. ワークブック(Excelファイル本体)を作成
wb = Workbook()

# 2. アクティブなシート(最初に開いているシート)を選択
ws = wb.active

# 3. シートの名前を変更(任意)
ws.title = "名簿リスト"

# 4. セルに値を書き込む
# A1セルに「名前」、B1セルに「年齢」を入力
ws["A1"] = "名前"
ws["B1"] = "年齢"

# 5. ファイル名を指定して保存
wb.save("sample.xlsx")

注意点:
最後にsave()をしないとファイルとして保存されないので注意が必要です。

ポイント:
既にあるファイル名でsave()を行うと上書きされ、存在しないファイル名でsave()を行うと新規作成されます。

既存のExcelファイルを読み込む

from openpyxl import load_workbook

# 1. 既存のファイルを読み込む
wb = load_workbook("sample.xlsx")

# 2. アクティブなシート(最初に開いているシート)を選択
ws = wb.active

# 3. 特定のセルの値を取得して表示
print(f"A1セルの値: {ws['A1'].value}")
# 出力結果: A1セルの値: XX
  • load_workbook()を使用します
  • セルの値を取り出すときは.valueを付けます

シートの指定について:
上記のwb.activeは「Excel保存時に開かれていたシート(必ずしも1番目のシートとは限らない)」を取得するため、意図しないシートが選ばれてしまう可能性があります。

確実に特定のシートを操作したい場合は、以下のようにシート名を直接指定してください。

# "Sheet1" という名前のシートを指定して取得する場合
ws = wb["Sheet1"]

セルをループで処理する

# データ範囲をループして読み取る
# min_row=1 : 1行目からスタート
# max_col=3 : 3列目(C列)まで
for row in ws.iter_rows(min_row=1, max_col=3):
    for cell in row:
        print(cell.value)
  • iter_rows()は、指定した範囲のセルを 「1行ずつ」 取ってくる便利な機能です
  • 行のリストがrowに入り、その中のセルをcellとして取り出しています

イメージ:

  1. 外側のループが「1行目データ」をrowに入れる
    • 内側のループが、そのデータから「A1セル」→「B1セル」の順にcellを取り出す
  2. 外側のループ が「2行目のデータ」をrowに入れる
    • 内側のループが、そのデータから「A2セル」→「B2セル」の順にcellを取り出す

どこまで処理されるのか:
max_row(終わりの行)を指定しなかった場合、「データが入っている一番下の行」まで自動で処理が続きます。データが100行あれば100行目まで、1万行あれば1万行目までループします。
指定したい場合は、iter_rows()の引数にmax_row = Xを渡してあげてください。

セルの書式(デザイン)を変更する

from openpyxl.styles import Font, PatternFill

# 太字・文字サイズ12ポイントにする設定を作成
bold_font = Font(bold=True, size=12)

# 背景色を黄色単色にする設定を作成
yellow_fill = PatternFill(patternType='solid', fgColor='FFFF00')

# A1セルに適用
ws["A1"].font = bold_font
ws["A1"].fill = yellow_fill

# 保存して反映
wb.save("styled.xlsx")

ポイント:
よく使う書式設定を冒頭にコーディングしておくことで、再利用性が高まります。

pandasでExcelを扱う

pandas は、Excelのデータを 「DataFrame(データフレーム)」 という表形式のデータとして一気に読み込みます。 細かいセルの装飾はできませんが、計算・集計・加工のスピードは圧倒的です。

Excelを読み込む

import pandas as pd

# Excelファイルを読み込んで DataFrame(表)にする
df = pd.read_excel("sample.xlsx")

# データを表示して確認
# () の中に何も書かないと、自動で「最初の5行」が表示されます
print(df.head())

# もし「3行だけ」見たい場合は、数字を指定します
print(df.head(3))
  • pd.read_excel()だけで、Excelの中身がプログラム内に取り込まれます
  • 1行目を自動的に「ヘッダー(列名)」として認識してくれます

データを加工する

pandasを使えば、列ごとの計算も一瞬です。

# 「年齢」列のすべてのデータに 1 を足す
df["年齢"] = df["年齢"] + 1

# 新しい列「備考」を追加して、全員に "確認済" と入れる
df["備考"] = "確認済"

print(df)
  • df["年齢"] + 1と書くだけで、その列のデータ全てに+1されます
  • df["備考"] = "XXX"と書くだけで、備考列が追加されます

Excelとして書き出す

加工したデータを、新規Excelファイルとして保存する場合に便利です。

# 新しいファイル名で保存
# index=False は「行番号(0, 1, 2...)」を出力しないためのおまじない
df.to_excel("output.xlsx", index=False)
  • index=Falseを指定しないと、A列に連番(0, 1, 2...)が勝手に追加されてしまいます。Excelとして保存する場合は、基本的にFalseにしておくと綺麗

openpyxl と pandas の使い分け

目的 推奨ライブラリ
書式付きExcel編集 openpyxl
大量データの集計 pandas
自動レポート作成 pandas + openpyxl

pandasで集計 → openpyxlで書式調整という使い方がおすすめです。

まとめ

  • PythonでのExcel操作は効率化につながる
  • 書式操作は openpyxl
  • データ処理は pandas

次回もpython関連の記事を執筆予定です!
最後までお読みいただきありがとうございました!
もし「役に立った!」と思ったら、いいね・ストックをいただけると励みになります😊

参考リンク

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?