Python 業務自動化 | Excel業務自動化:Excel基本操作 - シート追加

Python Python
スポンサーリンク

シート追加は「Excelに新しいシートを自動で作り、業務用の構造を整える」ための基本操作

Excel業務自動化では、新しいシートを追加してデータを書き込むという作業が非常に多く発生します。
例えば次のような場面です。

  • 月次レポートで「2024年3月」などのシートを毎月追加したい
  • テンプレートExcelに「集計」「明細」などのシートを自動生成したい
  • 複数のデータをシートごとに分けて出力したい

Pythonでは openpyxl を使うことで、Excelに自由にシートを追加できます。
初心者でも理解しやすいように、基本から実務テンプレートまで丁寧に解説します。


openpyxlでシートを追加する基本(最も実務向け)

新しいシートを追加する最小コード

from openpyxl import load_workbook

wb = load_workbook("sample.xlsx")
wb.create_sheet("新しいシート")
wb.save("sample.xlsx")
Python

深掘りポイント

  • create_sheet() でシートを追加できる
  • 引数にシート名を渡すだけでOK
  • 既存Excelにシートを追加する場合に最もよく使う

シートを特定の位置に追加する(順番を制御)

先頭にシートを追加する

wb = load_workbook("sample.xlsx")
wb.create_sheet("先頭シート", 0)
wb.save("sample.xlsx")
Python

深掘りポイント

  • 第2引数は「挿入位置」
  • 0 は先頭、1 は2番目
  • レポートの構造を整えるときに便利

新規作成したExcelに複数シートを追加する

Workbook から作り始める場合

from openpyxl import Workbook

wb = Workbook()

ws1 = wb.active
ws1.title = "メイン"

wb.create_sheet("売上")
wb.create_sheet("在庫")
wb.create_sheet("顧客")

wb.save("multi_sheet.xlsx")
Python

深掘りポイント

  • 新規Excelはデフォルトで1シートだけ
  • title で名前変更
  • create_sheet() で好きなだけ追加できる

pandasと組み合わせて複数シートに書き込む(表形式の出力に最適)

ExcelWriter を使って複数シートを作成

import pandas as pd

df1 = pd.DataFrame({"A": [1, 2, 3]})
df2 = pd.DataFrame({"B": [4, 5, 6]})

with pd.ExcelWriter("output.xlsx", engine="openpyxl") as writer:
    df1.to_excel(writer, sheet_name="Sheet1", index=False)
    df2.to_excel(writer, sheet_name="Sheet2", index=False)
Python

深掘りポイント

  • pandas は「表形式のデータ」を書き込むのが得意
  • ExcelWriter を使うと複数シートに出力できる
  • 集計結果をシートごとに分けて出力する業務で非常に便利

例題①:月次レポート用に「2024-03」シートを自動追加する

シナリオ

毎月のレポート作成で、月名のシートを自動生成したい。

from openpyxl import load_workbook
from datetime import datetime

wb = load_workbook("report.xlsx")

month_name = datetime.now().strftime("%Y-%m")
wb.create_sheet(month_name)

wb.save("report.xlsx")
Python

深掘りポイント

  • 月次レポートの自動化で最もよく使う
  • シート名を日付で自動生成できる

例題②:テンプレートExcelに「集計」「明細」シートを追加する

シナリオ

テンプレートに必要なシートを自動で追加したい。

from openpyxl import load_workbook

wb = load_workbook("template.xlsx")

wb.create_sheet("集計")
wb.create_sheet("明細")

wb.save("template_ready.xlsx")
Python

深掘りポイント

  • テンプレートを使う業務では「必要なシートを追加する」処理が必須
  • シート構造を自動生成できるため、作業ミスがなくなる

例題③:複数のデータをシートごとに分けて出力する

シナリオ

店舗ごとの売上データをシートに分けて出力したい。

import pandas as pd

stores = {
    "東京店": pd.DataFrame({"売上": [100, 200]}),
    "大阪店": pd.DataFrame({"売上": [150, 250]}),
    "名古屋店": pd.DataFrame({"売上": [120, 180]})
}

with pd.ExcelWriter("stores.xlsx", engine="openpyxl") as writer:
    for name, df in stores.items():
        df.to_excel(writer, sheet_name=name, index=False)
Python

深掘りポイント

  • シート名を動的に作れるため、店舗数が増えても自動対応
  • 大量のExcelをまとめる業務で非常に強力

pathlib を使った読みやすいシート追加コード

Pathオブジェクトで直感的に書ける

from pathlib import Path
from openpyxl import load_workbook

path = Path("sample.xlsx")
wb = load_workbook(path)

wb.create_sheet("追加シート")

wb.save(path)
Python

メリット

  • パス結合が / で直感的
  • 大規模プロジェクトでも保守性が高い

シート追加を業務で設計するときの視点

  • openpyxl は「Excelそのものを操作」するため、シート追加に最適
  • pandas は「表形式のデータをシートに書き込む」場合に最適
  • シート名を日付・店舗名・カテゴリ名で自動生成すると業務効率が大幅に向上
  • 複数シート構造を自動生成することで、レポート作成の手間が激減
  • テンプレートExcelと組み合わせると、プロ品質の帳票が自動で作れる

タイトルとURLをコピーしました