Skip to content

A small project demonstrating how to use openpyxl for real-life problem-solving. Most comments are written in French.

License

Notifications You must be signed in to change notification settings

FlorianMortgat/demo-python-excel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Démonstration de l’utilisation d’openpyxl

L’objectif est de traiter des fichiers xlsx (Excel) en python.

Ce dossier contient une démonstration de manipulation en python de fichiers Excel :

  • nettoyage-exemple.py : le script de démonstration

  • exemple-source.xlsx : le fichier "sale" à nettoyer

  • bijnum.py : ma bibliothèque pour convertir des nombres en noms de colonne Excel et vice versa (ex : 'XA' = colonne 625 en partant de 1). Elle n’est pas utilisée par mon script de démo, mais elle peut servir. Exemple :

    >>> from bijnum import AZ
    >>> AZ.aaa2n('XJ')
    634
    >>> AZ.n2aaa(5)
    'E'
  • TSV.py : ma bibliothèque pour travailler avec des données CSV du type tab-separated telles que celles contenues par le presse-papier quand on copie des cellules depuis Excel. Cette bibliothèque n’est pas utilisée par mon script de démo, mais elle peut parfois servir (ça va parfois plus vite de travailler sur des dumps du presse-papier collés dans un bloc-notes que de créer un script openpyxl complet). Exemple :

    >>> from TSV import parseTSV, exportTSV
    >>> donnees_test = [['A1', 'B1 avec\nfin de ligne'], ['A2', 'B2'], ['A3', 'B3']]
    >>> print(exportTSV(donnees_test))
    "A1"	"B1 avec
    fin de ligne"
    "A2"	"B2"
    "A3"	"B3"
    >>> parseTSV('''
    ... "A1"	"B1 avec
    ... fin de ligne"
    ... "A2"	"B2"
    ... "A3"	"B3"''')
    [['A1', 'B1 avec\nfin de ligne'], ['A2', 'B2'], ['A3', 'B3']]

Version de python :

  • ces scripts sont prévus pour fonctionner avec python 3.*.
  • avec python 2.7, ça fonctionne assez bien, MAIS : quand on utilise python 2 avec openpyxl, il vaut mieux ne pas mettre de caractères non ASCII dans les identifiants Excel (noms des feuilles, noms des plages de cellules) car openpyxl pour python 2 a quelques bugs non corrigés (très faciles à corriger dans le code source, d’ailleurs, c’est ce que j’avais fait pour PROJET car j’avais commencé avec python 2).

Version d’openpyxl :

J’ai utilisé la version 2.5.12 d’openpyxl, que j’ai légèrement modifiée pour résoudre des bugs mineurs ; mes scripts peuvent ou non fonctionner avec des versions plus récentes.

Note sur les formules avec openpyxl :

L’évaluation des formules dans Excel est faite par Excel. Openpyxl n’inclut pas de module d’évaluation de formules (autrement dit, openpyxl est incapable de calculer le contenu d’une cellule ayant une formule). Openpyxl peut mettre des formules dans les cellules, mais ne peut pas les "appliquer", ni même vérifier qu’elles sont valides.

Contact : Florian Mortgat

About

A small project demonstrating how to use openpyxl for real-life problem-solving. Most comments are written in French.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages