レポートのバッチ処理
レポートを自動生成します
「レポートのバッチ処理」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
定型レポートを自動化する
openpyxl の本当の価値は自動化にあります。手作業なしで、似たようなレポートを何十個も生成できます。たとえば、地域ごとの月次売上シートや、顧客ごとのサマリーファイルを作成できます。
基本的なパターンは、データのグループをループ処理し、各グループのワークブックを作成して、一意の名前で保存することです。
データをグループ化する
一括レポートの作成は、たとえば地域ごとにレコードをグループ化することから始まります。Excel の処理を始める前に、標準的な Python の機能で簡潔に処理できます。
records = [
{'region': 'North', 'sales': 100},
{'region': 'South', 'sales': 80},
{'region': 'North', 'sales': 120},
]
groups = {}
for r in records:
groups.setdefault(r['region'], []).append(r['sales'])
for region, sales in groups.items():
print(region, sales, 'total', sum(sales))グループごとに 1 ファイル作成する
グループごとにワークブックを作成し、行を書き込んで、グループのキーから生成した名前で保存します。ループ本体は、1 つのレポート用に作成したコードと同じものを繰り返し実行します。
安全なファイル名
グループのキーには、ファイル名に使用できない文字が含まれている場合があります。保存に失敗しないよう、最初にサニタイズしてください。これは他の場所でも使われる slugify と同じ考え方です。
import re
name = 'North/West Region 2024'
safe = re.sub(r'[^A-Za-z0-9]+', '_', name).strip('_')
print('report_' + safe + '.xlsx')再利用可能なテンプレート関数
レポートのレイアウトを、データを受け取ってワークブックを返す 1 つの関数に切り出します。ループ内で呼び出すことで、すべてのレポートの一貫性を保ち、コードを DRY(自分自身を繰り返さない)にできます。
この関数では、ヘッダーの設定、行の書き込み、合計とスタイルの追加を行い、その後 wb を返します。
集計行を追加する
ほとんどのレポートは合計で終わります。Python または Excel の数式で集計値を計算し、最後の行として書き込みます。ここでは集計値を計算します。
sales = [100, 120, 90, 110]
summary = {
'count': len(sales),
'total': sum(sales),
'average': sum(sales) / len(sales),
'max': max(sales),
}
for k, v in summary.items():
print(k.ljust(8), v)1つのファイルに複数のシート
場合によっては、多数のファイルよりも、グループごとにシートを1つ備えた1つのファイルのほうが適しています。グループをループ処理し、wb.create_sheet(title=group_name)を呼び出して、各グループを専用のシートに書き込みます。最後に一度だけ保存します。
出力フォルダーの整理
実行結果が互いに上書きされないように、日付付きの出力ディレクトリにレポートを書き込みます。os.makedirs(path, exist_ok=True)を使用して安全に作成し、そこにファイル名を結合します。
import os
base = 'reports'
run_date = '2026-05-30'
out_dir = os.path.join(base, run_date)
path = os.path.join(out_dir, 'north.xlsx')
print('Would create dir:', out_dir)
print('File path:', path)バッチ処理のエラー処理
長時間のバッチ処理では、1つの不正なグループによって残りの処理まで停止しないようにする必要があります。各レポートをtry/exceptで囲み、失敗をログに記録して処理を続行します。途中でクラッシュする完全な実行よりも、最後まで完了する部分的な実行のほうが適しています。
ジョブのスケジュール設定
スクリプトが動作するようになったら、cron、Task Scheduler、またはCIジョブを使って、毎晩または毎月実行するようにスケジュールします。同じコードで、人手を介さずに常に新しいレポートを自動生成できるようになります。
進捗のログ記録
長時間のバッチ処理では、進捗を出力すると便利です。処理中のグループと残りの数を表示またはログに記録すれば、処理が遅いだけなのか、停止しているのかを判断できます。合計に対する単純なカウンターで十分です。
再実行が必要になったとき、ログがあれば、どのレポートが成功したかも確認できるため、失敗したものだけを再実行できます。
確認テスト
バッチ自動化の知識をテストします。
まとめ
これで、レポート生成を自動化できるようになりました。
- データをグループ化し、ループ処理でグループごとに1つのワークブック(または1つのシート)を作成する
- レイアウトを再利用可能なテンプレート関数に切り出す
- ファイル名をサニタイズし、日付付きの出力フォルダーに書き込む
- 集計行を追加し、各レポートをtry/exceptで囲み、スクリプトをスケジュールする
これにより、何時間もかかっていた手作業のスプレッドシート作成を、1コマンドで実行できるジョブに変えられます。
よくある質問
「レポートのバッチ処理」レッスンは無料ですか?
はい。「レポートのバッチ処理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「レポートのバッチ処理」で何を学びますか?
レポートを自動生成します ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「レポートのバッチ処理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ワークブックの読み込み
- セルの書き込みとスタイル設定
- 数式とグラフ
- レポートのバッチ処理