Si votre script Python traite des données, enregistre des erreurs ou calcule des métriques, une question logique se pose : et comment est-il pratique de sauvegarder le résultat ?
Le format idéal est HTML. Il est beau, flexible et s'ouvre dans n'importe quel navigateur. Et en plus, il est facile à générer à la volée.
Dans cet article, nous allons vous montrer comment générer rapidement des rapports HTML en Python. Sans cadres ni magie inutiles, seulement des techniques pratiques 💡

🧰 Quand avez-vous besoin d'un rapport HTML ?
Après le traitement des données CSV/Excel
Pour afficher des graphiques et des tableaux
Lors de la collecte de métriques (par exemple, dans les tâches cron)
Pour les journaux d'erreurs traités joliment
Pour stocker les rapports de projet
📊 Avantages du HTML :
Visualisation pratique
Prend en charge les styles et les graphiques
S'ouvre sur n'importe quel appareil
🛠 Méthodes de génération HTML
Méthode | Convient pour |
|---|---|
🔹 Assemblage manuel de la ligne | Cas simples |
🔹 Moteurs de modèles (Jinja2) | Modèles flexibles |
🔹 Pandas | Tableaux |
🔹 Bibliothèques (WeasyPrint, yattag) | Mise en page étendue |
🧪 Exemple 1 : HTML simple manuel
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)
🧪 Exemple 2 : Pandas .to_html() pour les tableaux
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)
🧪 Exemple 3 : Jinja2 — modèles avec données
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)
Modèle 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>
📦 Comment ajouter des graphiques ?
Si vous utilisez matplotlib ou plotly, vous pouvez enregistrer le graphique sous forme d'image et l'insérer dans le rapport :
plt.savefig("chart.png")
html = """
<img src="chart.png" alt="График">
"""
💡 Où le rapport HTML est-il utile
📊 Rapports internes de l'équipe
🛠 Surveillance DevOps (via cron)
💼 Rapports automatiques aux clients
📁 Archivage des résultats des scripts
🤖 Puis-je avoir un PDF ?
Oui ! Utilisez WeasyPrint ou pdfkit :
pip install weasyprintfrom weasyprint import HTML
HTML("report.html").write_pdf("report.pdf")
Dans l'application Code vous trouverez des cours sur Python, HTML et autres.
Créez des modèles, visualisez des données et faites tout joliment, même si vous débutez.
Rejoignez également notre communautés Telegram 📬
💬 Écrivez-nous si vous souhaitez voir un article sur la génération de PDF, les rapports interactifs ou les envois automatiques de courriels avec des rapports HTML !
