「毎日のExcel作業、もっと楽にできないかな…」
そう思ったことはありませんか?

Excelの使った業務ってどんなお仕事でもありますよね!
日報作成や経理、データの整理まで繰り返し作業が多いんです!

そうですよね~!!
Excelはいたるところで使われている一方で繰り返しの単純作業が多く残っているんじゃないでしょうか?
面倒に感じたらPythonを用いてExcel業務を自動化してみるのはどうでしょう?
Pythonを使えば、Excelの面倒なコピペ作業やデータ集計を自動化することができます。
そのために最もよく使われるライブラリが「openpyxl」です。
この記事では、プログラミング初心者の方でも分かるように、openpyxlのインストールから基本的な読み書きの方法までを優しく解説します。
1. openpyxlとは?
openpyxlは、PythonでExcelファイル(.xlsx)を読み込んだり、新しく作成したりするためのライブラリです。
- できること: データの入力、読み取り、セルの装飾、グラフ作成など
- できないこと: 古いExcel形式(.xls)の操作(※.xlsxのみ対応です)
2. 準備:インストールしよう
まずはPythonが使える環境で、以下のコマンドをターミナル(またはコマンドプロンプト)に入力してインストールしましょう。
pip install openpyxl
これで準備は完了です!
3. まず知っておきたい「3つの階層」
コードを書く前に、Excelの構造をPythonがどう捉えているかイメージしましょう。
この3つが分かれば怖くありません。
- Workbook(ワークブック): Excelファイルそのもの。
- Worksheet(ワークシート): ファイルの中にある「シート」。
- Cell(セル): 実際にデータが入るマス目。
「ブックを開いて」→「シートを選んで」→「セルを操作する」
この順番が基本です。
4. 実践①:新しいExcelファイルを作ってみよう
まずは、何もないところからExcelファイルを作成し、文字を書き込んで保存してみます。
サンプルコード
import openpyxl
# 1. 新しいワークブックを作る
wb = openpyxl.Workbook()
# 2. 作業するシートを選択する(最初は自動で作られたシートを使います)
ws = wb.active
# シート名を変更してみる(任意)
ws.title = "テストシート"
# 3. セルにデータを入れる
ws['A1'] = "こんにちは!"
ws['A2'] = "Python"
ws['B1'] = 100
# 4. ファイルを保存する
wb.save("sample.xlsx")
解説
- wb.active: 今開いているアクティブなシートを取得します。
- ws['A1'] = ...: ExcelのA1セルに値を入れる直感的な書き方です。
- 注意: コードを実行したフォルダに sample.xlsx が生成されます。
5. 実践②:既存のExcelファイルを読み込もう
次は、さっき作った sample.xlsx の内容をPythonで読み取ってみましょう。
サンプルコード
import openpyxl
# 1. 既存のファイルを読み込む
wb = openpyxl.load_workbook("sample.xlsx")
# 2. シートを選択する(名前で指定する場合)
ws = wb["テストシート"]
# 3. セルの値を取得する
text = ws['A1'].value
number = ws['B1'].value
print(f"A1の中身: {text}")
print(f"B1の中身: {number}")
解説
- load_workbook("ファイル名"): 既存のファイルを開く魔法の言葉です。
- .value: これを付け忘れると、データの中身ではなく「セルそのもの(オブジェクト)」が取得されてしまうので注意!
6. 実践③:リストのデータをまとめて書き込む(便利!)
A1, A2, B1...と一つずつ書くのは大変ですよね。
append(アペンド)を使うと、行ごとにリストのデータをポンポン追加できます。
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
# 商品リスト
data_list = [
["商品名", "価格", "個数"], # 1行目(見出し)
["りんご", 100, 3], # 2行目
["みかん", 50, 10], # 3行目
["バナナ", 200, 5] # 4行目
]
# ループで一行ずつ追加
for row in data_list:
ws.append(row) # リストの中身を横一列に配置してくれる
wb.save("fruit_list.xlsx")
これができると、Webスクレイピングで集めたデータなどを一瞬でExcelに保存できるようになります!
7. 実践④:ちょっとだけオシャレにする(装飾)
文字の色を変えたり、太字にしたりすることも可能です。
from openpyxl import Workbookfrom openpyxl.styles import Font, PatternFill
wb = Workbook()
ws = wb.active
ws['A1'] = "重要データ"
# フォントの設定(太字、赤色、サイズ20)
font_style = Font(bold=True, color="FF0000", size=20)
ws['A1'].font = font_style
# 背景色の設定(黄色)
fill_style = PatternFill(fill_type="solid", fgColor="FFFF00")
ws['A1'].fill = fill_style
wb.save("style_test.xlsx")
⚠️ 初心者がハマりやすいポイント
エラー:「PermissionError: [Errno 13] Permission denied...」が出た!
- 原因: ExcelファイルをExcelソフトで開いたまま、Pythonで wb.save() を実行していませんか?
- 対策: Excelファイルを閉じてから、もう一度Pythonを実行してください。上書き保存しようとして失敗しています。
まとめ
openpyxlを使えば、PythonとExcelのいいとこ取りができます。
- Workbookを作る(または読み込む)
- Worksheetを選ぶ
- Cellに読み書きする
- 最後は必ず save する
まずは、この記事のコードをコピペして動かしてみてください。
「おぉ、本当にExcelができてる!」という感動が、自動化への第一歩です。
ぜひ、日々の業務効率化に役立ててみてくださいね!🐍📊
またもっと詳細を学びたい方は以下の書籍を参考にしてみてください⭐
Pythonの基礎からExcelを操作を基礎から学びたい方
Pythonを学んだ後に業務の自動化を体系的に学びたい方
本ブログ「ゴマフリーダムのPython教室」のトップページへは以下へアクセス!



達人に学ぶDB設計 徹底指南書