Traitement par lots des rapports
Générer automatiquement des rapports
Traitement par lots des rapports est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.
Automatiser les rapports répétitifs
Le véritable intérêt d’openpyxl réside dans l’automatisation : générer des dizaines de rapports similaires sans travail manuel. Pensez à des feuilles de ventes mensuelles par région ou à un fichier de synthèse par client.
Le modèle est le suivant : parcourez les groupes de données, créez un classeur pour chacun, puis enregistrez-le sous un nom unique.
Regrouper les données
Les rapports par lots commencent par le regroupement des enregistrements, par exemple par région. Python standard gère cette étape simplement avant le début de toute opération Excel.
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))Un fichier par groupe
Pour chaque groupe, vous créez un classeur, écrivez les lignes et l’enregistrez sous un nom dérivé de la clé du groupe. Le corps de la boucle reprend le même code que celui écrit pour un seul rapport, mais de manière répétée.
Noms de fichier sûrs
Les clés de groupe peuvent contenir des caractères interdits dans les noms de fichier. Nettoyez-les d’abord afin que l’enregistrement n’échoue jamais. C’est la même idée que la transformation en identifiant utilisée ailleurs.
import re
name = 'North/West Region 2024'
safe = re.sub(r'[^A-Za-z0-9]+', '_', name).strip('_')
print('report_' + safe + '.xlsx')Une fonction modèle réutilisable
Regroupez la mise en page du rapport dans une seule fonction qui reçoit les données et renvoie un classeur. L’appeler dans la boucle garantit la cohérence de tous les rapports et rend le code DRY (ne vous répétez pas).
La fonction définirait les en-têtes, écrirait les lignes, ajouterait les totaux et les styles, puis renverrait wb.
Ajouter une ligne de synthèse
La plupart des rapports se terminent par des totaux. Calculez les agrégats dans Python ou avec une formule Excel, puis écrivez-les sur la dernière ligne. Ici, nous calculons les valeurs de synthèse.
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)Plusieurs feuilles dans un seul fichier
Parfois, un seul fichier avec un onglet par groupe est préférable à de nombreux fichiers. Parcourez les groupes en boucle et appelez wb.create_sheet(title=group_name) pour écrire chaque groupe dans son propre onglet. Enregistrez une seule fois à la fin.
Organisation des dossiers de sortie
Écrivez les rapports dans un dossier de sortie daté afin que les exécutions ne s'écrasent pas les unes les autres. Utilisez os.makedirs(path, exist_ok=True) pour le créer en toute sécurité, puis utilisez join pour y ajouter les noms de fichiers.
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)Gestion des erreurs dans les lots
Dans un long traitement par lots, un groupe incorrect ne doit pas interrompre le reste. Entourez chaque rapport d'un bloc try/except, consignez l'échec, puis continuez. Une exécution partielle qui se termine vaut mieux qu'une exécution complète qui s'interrompt en cours de route.
Planification de la tâche
Une fois le script opérationnel, planifiez-le (avec cron, le Planificateur de tâches ou une tâche d'intégration continue) pour qu'il s'exécute chaque nuit ou chaque mois. Le même code produira alors automatiquement de nouveaux rapports, sans intervention humaine.
Consignation de la progression
Les longs traitements par lots bénéficient d'un affichage de la progression. Affichez ou consignez le groupe en cours de traitement et le nombre de groupes restants, afin de distinguer une exécution lente d'une exécution bloquée. Un simple compteur comparé au total suffit.
La journalisation vous fournit également un relevé des rapports qui ont réussi si vous devez relancer uniquement les échecs.
Vérification rapide
Évaluez vos connaissances sur l'automatisation des traitements par lots.
Récapitulatif
Vous pouvez maintenant automatiser la génération de rapports :
- Regrouper les données, puis parcourir les groupes en boucle en créant un classeur (ou une feuille) par groupe
- Factoriser la mise en page dans une fonction de modèle réutilisable
- Assainir les noms de fichiers et écrire les résultats dans des dossiers de sortie datés
- Ajouter des lignes de synthèse, entourer chaque rapport d'un bloc try/except et planifier le script
Vous transformez ainsi des heures de travail manuel sur des feuilles de calcul en une tâche exécutée avec une seule commande.
Questions Fréquemment Posées
La leçon « Traitement par lots des rapports » est-elle gratuite ?
Oui — le texte complet de « Traitement par lots des rapports » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Traitement par lots des rapports » ?
Générer automatiquement des rapports Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Python Academy ?
Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Traitement par lots des rapports » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?
Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire des classeurs
- Écrire et mettre en forme des cellules
- Formules et graphiques
- Traitement par lots des rapports