Cinq bibliothèques Python pour manipuler des fichiers Excel

Python propose plusieurs bibliothèques pour la lecture, l'écriture et la modification de fichiers Excel. Voici les principales approches.

  1. 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}")
  1. É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')
  1. 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')
  1. 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')
  1. 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()

Étiquettes: xlrd xlwt xlutils openpyxl xlsxwriter

Publié le 1 juin à 20h09