Excel保存は「作ったExcelを確実に残し、業務自動化を完成させる」ための最重要ステップ
PythonでExcelを操作する際、保存処理(save)は必ず最後に必要になります。
どれだけセル操作・書式設定・データ加工をしても、保存しなければExcelに反映されません。
初心者がつまずきやすいポイントでもあるため、
ここでは 基本 → 応用 → 実務テンプレート の順で丁寧に解説します。
基本:Excelを保存する(最もシンプル)
既存ファイルを上書き保存する
from openpyxl import load_workbook
wb = load_workbook("sample.xlsx")
ws = wb["Sheet1"]
# 何か操作した後…
ws["A1"].value = "Hello Excel"
wb.save("sample.xlsx")
Python深掘りポイント
wb.save("sample.xlsx")を実行した瞬間にファイルが更新される- ファイル名を同じにすると上書き保存
- Excelを開いたままだと保存できないので注意
- 保存し忘れると変更がすべて消えるため、最後に必ず書く
別名で保存する(バックアップ・テンプレート運用に便利)
sample.xlsx → sample_output.xlsx として保存
wb.save("sample_output.xlsx")
Python深掘りポイント
- 元ファイルを壊したくないときに必須
- テンプレートを読み込んで別名保存するのが実務で最も多い
- 「入力用テンプレート → 出力ファイル」の流れが作れる
新規ファイルとして保存する(空のExcelを作る)
Workbook() から新規作成して保存
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws["A1"].value = "新規ファイルです"
wb.save("newfile.xlsx")
Python深掘りポイント
- 新しいExcelを自動生成できる
- レポート自動作成・帳票生成でよく使う
保存前にフォルダを自動作成する(実務で非常に便利)
Pythonはフォルダが存在しないと保存できません。
そのため、保存前にフォルダを作る処理を入れると安全です。
フォルダを作ってから保存する
import os
from openpyxl import load_workbook
os.makedirs("output", exist_ok=True)
wb = load_workbook("sample.xlsx")
wb.save("output/result.xlsx")
Python深掘りポイント
exist_ok=Trueでフォルダがあってもエラーにならない- 自動レポート生成で必須のテクニック
- 保存先を整理しやすくなる
pathlib を使った保存(最も読みやすい書き方)
Pathオブジェクトで直感的に書ける
from pathlib import Path
from openpyxl import load_workbook
path = Path("output.xlsx")
wb = load_workbook("sample.xlsx")
wb.save(path)
Python深掘りポイント
/でパス結合できるためコードが美しい- 大規模プロジェクトでよく使われる
保存時に上書き確認を入れる(安全性UP)
上書きされると困る場合のチェック
import os
from openpyxl import load_workbook
output = "report.xlsx"
if os.path.exists(output):
print("既にファイルがあります。別名で保存してください。")
else:
wb = load_workbook("template.xlsx")
wb.save(output)
Python深掘りポイント
- 誤って上書きする事故を防げる
- 業務で重要な帳票を扱うときに役立つ
例題①:テンプレートを読み込み、加工して別名保存する
シナリオ
template.xlsx を読み込み、A1 に日付を書き込み、report.xlsx として保存
from openpyxl import load_workbook
from datetime import datetime
wb = load_workbook("template.xlsx")
ws = wb["Sheet1"]
ws["A1"].value = datetime.now().strftime("%Y-%m-%d")
wb.save("report.xlsx")
Python解説
- テンプレート運用の基本パターン
- 日付入りレポートを自動生成できる
例題②:処理結果を output フォルダに保存する
import os
from openpyxl import load_workbook
os.makedirs("output", exist_ok=True)
wb = load_workbook("data.xlsx")
ws = wb.active
ws["B2"].value = "処理完了"
wb.save("output/data_processed.xlsx")
Python解説
- フォルダ作成 → 保存の流れは実務で非常に多い
- 自動化スクリプトの基本構造
例題③:複数ファイルを読み込み、まとめて保存する
from openpyxl import load_workbook
files = ["a.xlsx", "b.xlsx", "c.xlsx"]
for f in files:
wb = load_workbook(f)
ws = wb.active
ws["A1"].value = "処理済み"
wb.save(f.replace(".xlsx", "_done.xlsx"))
Python解説
- バッチ処理(大量ファイルの自動処理)に最適
- 保存名を自動で変えることで上書きを防げる
Excel保存を業務で設計するときの視点
- 上書き保存か、別名保存かを明確にする
- テンプレート運用では「読み込み → 別名保存」が基本
- フォルダ作成を自動化するとエラーが減る
- pathlib を使うとコードが読みやすくなる
- 保存し忘れは致命的なので、最後に必ず save を書く
