Python propose plusieurs bibliothèques pour la lecture, l'écriture et la modification de fichiers Excel. Voici les principales approches.
- Lecture de fichiers avec xlrd
La bibliothèque xlrd est principalement utilisée pour extraire des données de fichiers au format .xls.
import xlrd
# Accéder au fichier Excel
classeur = xlrd.open_workbook('export_donnees.xls')
feuille_active = classeur.sheet_by_index(0)
total_lignes = feuille_active.nrows
# Extraire les données en ignorant l'en-tête
for position in range(1, total_lignes):
enregistrement = feuille_active.row_values(position)[:8] # Limiter aux 8 premières colonnes
print(f"Ligne {position}: {enregistrement}")
- Écriture de fichiers avec xlwt
xlwt permet de générer de nouveaux fichiers Excel au format .xls.
import xlwt
# Initialiser un nouveau classeur
classeur_ecriture = xlwt.Workbook()
feuille = classeur_ecriture.add_sheet('Données')
# Remplir des cellules
feuille.write(0, 0, 'Identifiant')
feuille.write(0, 1, 'Valeur')
feuille.write(1, 0, 'ID_001')
feuille.write(1, 1, 150.75)
classeur_ecriture.save('resultat_export.xls')
- Modification de fichiers avec xlutils
En combinant xlrd et xlutils, il est possible d'altérer un fichier existant.
import xlrd
from xlutils.copy import copy as copier_fichier
# Charger le fichier source
classeur_source = xlrd.open_workbook('rapport_original.xls')
classeur_modifie = copier_fichier(classeur_source)
feuille_modifiable = classeur_modifie.get_sheet(0)
# Mettre à jour une cellule spécifique
feuille_modifiable.write(4, 2, 'Nouvelle valeur')
classeur_modifie.save('rapport_modifie.xls')
- Lecture et écriture avec openpyxl
openpyxl offre des fonctionnalités complètes pour les fichiers .xlsx, incluant la gestion des styles.
from openpyxl import load_workbook, Workbook
# Ouvrir un fichier existant
classeur_ouvert = load_workbook('inventaire.xlsx')
feuilles = classeur_ouvert.sheetnames
feuille_courante = classeur_ouvert[feuilles[0]]
# Lire et modifier des cellules
contenu_cellule = feuille_courante['B3'].value
print(f"Valeur en B3: {contenu_cellule}")
feuille_courante['B3'] = 9999
# Créer un nouveau classeur
nouveau_classeur = Workbook()
nouvelle_feuille = nouveau_classeur.active
nouvelle_feuille['A1'] = 'Exemple'
nouveau_classeur.save('nouveau_fichier.xlsx')
- Création avancée avec xlsxwriter
xlsxwriter excelle dans la génération de fichiers .xlsx complexes, avec support des graphiqeus et formats personnalisés.
import xlsxwriter
# Configuration du classeur
generateur = xlsxwriter.Workbook('analyse_graphique.xlsx')
feuille_graphique = generateur.add_worksheet('Visualisation')
# Préparation des données
en_tetes = ['Mois', 'Ventes']
feuille_graphique.write_row('A1', en_tetes)
donnees = [('Jan', 1200), ('Fév', 1800), ('Mar', 1500)]
for index, (periode, montant) in enumerate(donnees, start=1):
feuille_graphique.write(index, 0, periode)
feuille_graphique.write(index, 1, montant)
# Création d'un graphique
graphique = generateur.add_chart({'type': 'column'})
graphique.add_series({
'name': '=Visualisation!$B$1',
'categories': '=Visualisation!$A$2:$A$4',
'values': '=Visualisation!$B$2:$B$4',
})
graphique.set_title({'name': 'Évolution des ventes'})
feuille_graphique.insert_chart('D2', graphique)
generateur.close()