Python スクリプトがデータを処理したり、エラーを記録したり、メトリクスをカウントしたりする場合、論理的な質問が発生します。 結果を保存するにはどうすればよいですか?
理想的な形式は HTML。美しく、柔軟性があり、どのブラウザでも開きます。さらに、その場で簡単に生成することができます。
この記事では、PythonでHTMLレポートをすばやく生成する方法を説明します。フレームワークや余計な魔法なしで、実用的なテクニックだけ💡

🧰 HTML レポートが必要な場合
CSV/Excelデータの処理後
グラフと表を表示するには
メトリクスを収集する場合(例:cronタスク)
エラーログ用に美しく処理されました
プロジェクトレポートの保存用
📊 HTMLの利点:
視覚化しやすい
スタイルとグラフィックスをサポート
どのデバイスでも開くことができます
🛠 HTMLの生成方法
方法 | 適合 |
|---|---|
🔹 手動の行の組み立て | 単純なケース |
🔹テンプレートエンジン(Jinja2) | 柔軟なテンプレート |
🔹 Pandas | 表 |
🔹ライブラリ(WeasyPrint、yattag) | 高度なレイアウト |
🧪 例1:手動で簡単なHTMLを作成する
html = """
<!DOCTYPE html>
<html>
<head><title>Report</title></head>
<Body>
<h1> Sample report </ h1>
<p>Total users: 25</p>
</body>
</html>
"""
with open("report.html", "w", encoding="utf-8") as f:
f.write(html)
🧪 例2:表のPandas .to_html()
import pandas as pd
df = pd.DataFrame({
"Name": ["Code", "Alice", "John"],
"Points": [85, 90, 78]
})
html_table = df.to_html(index=False)
html = f"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
table {{ border-collapse: collapse; width: 50%; margin: 20px auto; }}
th, td {{ border: 1px solid #ccc; padding: 8px; text-align: center; }}
th {{ background-color: #f2f2f2; }}
</style>
</head>
<body>
<h2 style="text-align:center;"> Score table </h2>
{html_table}
</body>
</html>
"""
with open("report.html", "w", encoding="utf-8") as f:
f.write(html)
🧪 例 3: Jinja2 — データ付きテンプレート
from jinja2 import Environment, FileSystemLoader
data = {"users": [{"name": "Code", "score": 88}, {"name": "Lena", "score": 95}]}
env = Environment(loader=FileSystemLoader("templates"))
template = env.get_template("report.html")
html = template.render(users=data["users"])
with open("report.html", "w", encoding="utf-8") as f:
f.write(html)
テンプレート templates/report.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Отчёт</title>
</head>
<body>
<h1>Баллы пользователей</h1>
<ul>
{% for user in users %}
<li>{{ user.name }} — {{ user.score }}</li>
{% endfor %}
</ul>
</body>
</html>
📦 グラフを追加する方法
matplotlibまたはplotlyを使用している場合は、グラフを画像として保存してレポートに挿入できます。
plt.savefig("chart.png")
html = """
<img src="chart.png" alt="График">
"""
💡 HTMLレポートが役立つ場所
📊 チームの内部レポート
🛠 DevOpsモニタリング(cron経由)
💼 顧客への自動レポート
📁 スクリプト結果のアーカイブ
🤖 PDFでもいいですか?
はい! WeasyPrintまたはpdfkitを使用してください。
pip install weasyprintCODE_BLOCK_6__
アプリで コディック Python、HTMLなどのコースが見つかります。
テンプレートを作成し、データを視覚化し、すべてを美しく作成します。まだ始めたばかりでも大丈夫です。
私たちの Telegramコミュニティ 📬
💬 PDF生成、インタラクティブレポート、HTMLレポートの自動メール配信に関する記事をご覧になりたい場合は、お知らせください!
