XD blog

blog page

excel, openpyxl, programmation, python, pythonnet


2014-06-20 Python et Excel

On m'a posé récemment la question des divers moyens de travailler avec Python et Excel. J'en connais trois :

Je préfère de loin la première option car elle n'implique pas Excel et elle est portable. Elle suppose juste la lecture et l'écriture de données selon le format des fichiers Excel. Et c'est la seule option qui marche si Excel n'est pas installé. Voici quelques modules qui permettent de faire cela :

La seconde option est celle que je déconseille. Elle utilise le module pywin32, elle n'est valide que sous Windows. Elle consiste à piloter l'application Excel avec l'API COM. Comme elle n'est pas documentée, il faut sans cesse deviner la syntaxe à utiliser pour faire telle ou telle chose. La dernière fois que je l'ai essayé (il y a quelques années), il y avait quelques interférences avec Excel s'il était déjà ouvert. De plus, il peut rester quelques processus Excel vivant qu'il faut tuer à un moment ou à un autre.

La dernière option consiste à utiliser .Net avec le module pythonnet (lien pour l'installer, ou sdpython/pythonnet pour le compiler vous-même). Elle présente deux avantages. Le premier est que la plupart des exemples qu'on trouve sur internet en C# sont transposables en Python presque sans modifications. Le second est qu'il est très facile d'écrire du code C#. Compilé sous forme de DLL, il est directement exploitable depuis Python. pythonnet fonctionne aussi sous Linux, il doit être possible de transposer le code Python sur un Mac même si je n'ai pas vérifié. Avec ce module, il est même possible d'écrire ses macros en Python sous Excel (voir pyxll).


<-- -->

Xavier Dupré