Introduction
L'automatisation des rapports Excel permet de transformer des tâches répétitives en processus rapides et fiables. Au lieu de copier-coller des données manuellement chaque mois, Python peut lire vos sources, les analyser et produire un fichier Excel prêt à l'emploi en quelques secondes. Ce tutoriel s'adresse aux débutants et vous apprend à utiliser pandas et openpyxl pour créer des rapports professionnels. Vous découvrirez comment charger des données CSV, calculer des totaux, appliquer des styles et sauvegarder le résultat. Cette approche réduit les erreurs humaines et vous fait gagner un temps précieux dans votre quotidien professionnel.
Prérequis
- Python 3.10 ou supérieur installé
- Connaissances de base en Python (variables, listes)
- Un éditeur de code (VS Code recommandé)
- Accès à un terminal ou invite de commandes
Installation des bibliothèques
pip install pandas openpyxlCette commande installe pandas pour manipuler les données et openpyxl pour créer et formater des fichiers Excel. Exécutez-la une seule fois dans votre terminal.
Lecture des données sources
import pandas as pd
df = pd.read_csv('ventes.csv')
print(df.head())
print('Colonnes disponibles :', df.columns.tolist())Ce script charge un fichier CSV nommé ventes.csv et affiche les premières lignes. Vérifiez toujours les noms des colonnes avant de continuer.
Étapes de traitement
Une fois les données chargées, nous allons calculer des totaux par catégorie et préparer un tableau de synthèse. Ces calculs sont effectués en mémoire avant d'être exportés vers Excel.
Calcul des agrégats
import pandas as pd
df = pd.read_csv('ventes.csv')
rapport = df.groupby('categorie')['montant'].sum().reset_index()
rapport.columns = ['Catégorie', 'Total Ventes']
print(rapport)Ce code regroupe les ventes par catégorie et calcule le total. Le résultat est un DataFrame propre prêt à être exporté.
Création du fichier Excel
import pandas as pd
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "Rapport Ventes"
df = pd.read_csv('ventes.csv')
rapport = df.groupby('categorie')['montant'].sum().reset_index()
# Écriture des en-têtes
ws.append(['Catégorie', 'Total Ventes'])
for row in rapport.values:
ws.append(list(row))
wb.save('rapport_ventes.xlsx')Nous créons un nouveau classeur Excel, ajoutons les données et sauvegardons le fichier. Cette version est déjà utilisable mais peut être améliorée avec du formatage.
Ajout de formatage professionnel
from openpyxl.styles import Font, PatternFill, Alignment
# Après avoir créé ws et ajouté les données
header_font = Font(bold=True, color='FFFFFF')
header_fill = PatternFill(start_color='4472C4', end_color='4472C4', fill_type='solid')
for cell in ws[1]:
cell.font = header_font
cell.fill = header_fill
cell.alignment = Alignment(horizontal='center')
# Ajuster la largeur des colonnes
ws.column_dimensions['A'].width = 20
ws.column_dimensions['B'].width = 18
wb.save('rapport_ventes.xlsx')Ce code applique un style d'en-tête bleu avec texte blanc et centre le contenu. Les largeurs de colonnes sont ajustées pour une meilleure lisibilité.
Bonnes pratiques
- Toujours valider la structure du fichier CSV avant le traitement
- Utiliser des noms de variables explicites (rapport_ventes plutôt que df2)
- Ajouter des commentaires dans le code pour les étapes importantes
- Tester le script sur un petit jeu de données avant de l'appliquer en production
- Sauvegarder les fichiers générés avec une date dans le nom (rapport_2026-01-15.xlsx)
Erreurs courantes à éviter
- Oublier d'installer openpyxl avant d'utiliser le moteur Excel
- Ne pas vérifier les noms des colonnes du CSV (erreurs de KeyError)
- Écraser le fichier Excel sans backup si le script est lancé plusieurs fois
- Ignorer les valeurs manquantes dans les données source
Pour aller plus loin
Vous pouvez maintenant planifier l'exécution automatique avec le planificateur de tâches Windows ou cron. Pour approfondir ces techniques, découvrez nos formations Learni.