0Pricing
Python Academy · レッスン

レポートのバッチ処理

レポートを自動生成します

「レポートのバッチ処理」は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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ワークブックの読み込み
  2. セルの書き込みとスタイル設定
  3. 数式とグラフ
  4. レポートのバッチ処理
← Python Academyに戻る