Meilleure bibliothèque Excel pour Python en 2026 : 4 sérieux prétendants testés

2026-11-03 02:49:07 Allen Yang
AI Summarize:
ChatGPT
ChatGPT ✓
Claude ✓
Grok ✓
Perplexity ✓
Quick
Quick
Concise overview
Highlights
Key takeaways
Detailed
Structured explanation
Brief
One sentence summary
Summarize |

A spreadsheet flowing into PDF, single-file HTML and a protected workbook, representing the four Python Excel options

Le lundi, vous devez charger un tableur dans un DataFrame. Le mercredi, un client vous a envoyé un modèle de classeur qui doit être mis à jour sans perdre ses graphiques. Le vendredi, l'équipe financière a besoin que le rapport soit exporté en PDF, tandis que le classeur d'origine doit rester protégé par mot de passe. Choisir la meilleure bibliothèque Excel pour Python consiste à faire correspondre la bibliothèque à ces différents besoins. Un mauvais choix peut ne pas se manifester immédiatement : les graphiques disparaissent après l'enregistrement, les formules n'ont aucun résultat calculé exploitable, ou un classeur binaire .xlsb ne peut pas être lu par la bibliothèque que vous avez choisie.

Pour aider les développeurs à faire le bon choix, nous avons testé quatre bibliothèques à l'aide de fixtures de test communes et d'un jeu de données commun de 50 000 lignes : pandas 3.1.0, openpyxl 3.1.5, XlsxWriter 3.3.1 et Spire.XLS for Python 16.8.2 (commercial). Nous avons évalué la prise en charge des formats de fichiers, l'édition et la préservation des classeurs, la gestion des formules, la conversion PDF et HTML, le chiffrement des classeurs, les performances, l'utilisation de la mémoire, les prérequis d'installation et les licences. Les résultats montrent ce que chaque bibliothèque fait bien, où se situent ses limites, et quelle option peut être la plus adaptée à différents projets. Cette comparaison se concentre sur trois bibliothèques open source et un SDK commercial ; les autres solutions commerciales ne sont pas couvertes.


Quelle bibliothèque Excel pour Python choisir ?

Chacune des trois bibliothèques open source excelle dans une tâche précise, et Spire.XLS couvre les projets où ces tâches doivent être exécutées ensemble. Le tableau ci-dessous en donne la version courte. Les sections suivantes expliquent le raisonnement et présentent les données de test.

Bibliothèque Idéale pour Point de vigilance à long terme
pandas L'analyse de données Nécessite d'autres outils pour les opérations au niveau du classeur
openpyxl L'édition de modèles XLSX Aucun moteur de calcul de formules intégré
XlsxWriter La création de rapports mis en forme Ne peut pas rouvrir des classeurs existants
Spire.XLS Le traitement Excel multi-étapes Licence commerciale avec support de l'éditeur et options de mise à jour

Si vous avez seulement besoin de lire des données dans un DataFrame, pandas avec le moteur calamine suffit, et vous pouvez arrêter la lecture ici. Si votre projet évolue vers l'automatisation, consultez notre guide sur l'automatisation de l'écriture Excel en Python.


Ce que les bibliothèques Excel Python open source font de mieux

pandas, openpyxl et XlsxWriter sont complémentaires plutôt qu'interchangeables. Chacune excelle dans une seule tâche, et c'est pourquoi de nombreux projets finissent par en utiliser deux ou trois côte à côte.

pandas : lire et analyser des données tabulaires

pandas transforme une feuille de calcul en DataFrame, ce qui correspond à la structure idéale pour l'analyse. Avec le moteur calamine, il lit les fichiers .xlsx, .xlsb, .ods et .xls, et il s'est révélé le lecteur le plus rapide de notre test : 294 ms pour 50 000 lignes × 6 colonnes (médiane de cinq exécutions). La mise en forme est possible via Styler avec jinja2, qui remplit et met en gras les cellules comme prévu. Dans pandas 3.1, nos tentatives de format numérique n'ont pas pris effet, et les cellules sont restées en format Général.

La limite est conceptuelle. Un DataFrame n'est pas un classeur. Le réécrire avec to_excel reconstruit le fichier, de sorte que les graphiques, images et tableaux croisés dynamiques ne sont pas conservés. Les formules peuvent être écrites mais ne sont pas calculées. Pour en savoir plus sur la lecture, consultez la lecture de fichiers Excel en Python et la documentation I/O Excel de pandas.

openpyxl : éditer des fichiers .xlsx et .xlsm existants

openpyxl charge un classeur, vous permet de le modifier, puis l'enregistre. Dans notre classeur de test, un aller-retour a conservé les graphiques, images, mises en forme conditionnelles, validations de données, cellules fusionnées, volets figés, filtres et parties de tableaux croisés dynamiques, et Excel 16.0 a ouvert le résultat sans erreur. Il s'agit d'un résultat pour nos fixtures, et non d'une garantie pour chaque forme DrawingML ou projet VBA.

Ses limites sont précises. Il prend en charge quatre formats OOXML (.xlsx, .xlsm, .xltx, .xltm). Il ne possède pas de moteur de calcul, donc les formules restent non calculées. Il ne peut pas ouvrir de fichiers protégés par mot de passe sans un outil externe tel que msoffcrypto. Les tableaux croisés dynamiques peuvent être préservés, mais en créer un nécessite d'assembler manuellement le cache et la définition via l'appel bas niveau add_pivot. Son mode write_only a utilisé le moins de mémoire de tous les writers testés, 79,4 Mo. Documentation : openpyxl.

XlsxWriter : générer de nouveaux rapports

XlsxWriter écrit de nouveaux fichiers .xlsx et le fait bien. Il prend en charge les formats, graphiques, images, mises en forme conditionnelles, validations de données et formules avec valeurs mises en cache. Il s'est révélé le writer le plus rapide de notre test avec 1,74 s pour 50 000 lignes, devant toutes les autres méthodes de ce test, y compris pandas et openpyxl.

Il ne peut pas lire ni modifier un fichier existant. Il ne permet pas de créer de tableau croisé dynamique, ne propose pas de chiffrement et ne produit pas de sortie .xlsb ou .ods. Documentation : XlsxWriter.


Quand les bibliothèques Excel de base ne suffisent plus

Les bibliothèques open source cessent de suffire lorsqu'une tâche franchit la frontière entre leurs spécialités. Cinq situations reviennent régulièrement.

  1. Plusieurs formats de fichiers dans un même pipeline. pandas peut lire xls, xlsb et ods, mais il renvoie un DataFrame et ne peut pas réenregistrer le classeur modifié sous la même forme. openpyxl et XlsxWriter ne gèrent pas du tout ces formats.
  2. Des formules qui doivent être recalculées après une modification. openpyxl conserve les formules mais ne peut pas les évaluer. pandas écrit des formules sans résultats, et la valeur mise en cache dépend du moteur sous-jacent : une valeur vide avec openpyxl, un 0 de remplacement avec xlsxwriter. Excel recalcule à l'ouverture, mais tout autre lecteur ne voit rien d'exploitable.
  3. Les tableaux croisés dynamiques et autres objets complexes. openpyxl peut conserver un tableau croisé dynamique existant mais n'offre aucun moyen de haut niveau d'en créer un. XlsxWriter et pandas n'en offrent aucun.
  4. La sortie PDF, HTML ou image. Convertir une feuille de calcul en PDF paginé nécessite une bibliothèque supplémentaire, et c'est à vous de gérer la mise en page, la mise à l'échelle et la pagination.
  5. La protection par mot de passe. Aucune des trois bibliothèques open source ne peut écrire un classeur nécessitant un mot de passe à l'ouverture.

Rien de tout cela ne rend les outils open source inadaptés. Le projet a simplement dépassé ce qu'un outil spécialisé couvre, et le coût se déplace vers du code de collage : conversions de formats, transferts de fichiers entre bibliothèques et mises à niveau de dépendances distinctes. Chaque outil supplémentaire ajoute sa propre dépendance, ses propres exceptions et sa propre façon de transmettre les fichiers.


Ce que vous pouvez faire avec Spire.XLS for Python

Spire.XLS for Python est une bibliothèque commerciale qui gère la lecture, l'édition, le calcul, la conversion et la protection des fichiers Excel via un modèle objet de classeur unique. Elle ne nécessite pas l'installation de Microsoft Office. Voici ce que cela couvre en pratique, avec les limites indiquées.

Lire et écrire plusieurs formats Excel

LoadFromFile ouvre les fichiers .xls, .xlsx, .xlsm, .xlsb et .ods, et SaveToFile écrit aux formats xlsx, xls, xlsb, xlsm, ods, csv, pdf, html et png. Le CSV est chargé avec un argument de délimiteur, comme LoadFromFile("data.csv", ","). Un cas typique est un système amont qui exporte du .xlsb alors que le consommateur aval attend du .xlsx ou du PDF.

from spire.xls import *

wb = Workbook()
wb.LoadFromFile("upstream.xlsb")
wb.SaveToFile("converted.xlsx", ExcelVersion.Version2016)

Une remarque de compatibilité : dans notre test, Excel 16.0 a ouvert les fichiers .xlsb et .ods produits par Spire.XLS, tandis que les lecteurs pandas (pyxlsb et calamine) n'ont pas ouvert ces fichiers précis. Testez les formats hérités en régression avec les lecteurs utilisés par vos systèmes en aval.

Éditer des classeurs existants et créer des tableaux croisés dynamiques

Chargez un classeur, modifiez-le, enregistrez-le. Dans notre classeur de test, les graphiques, images, mises en forme conditionnelles, validations de données, cellules fusionnées, volets figés, filtres et tableaux croisés dynamiques ont tous survécu à l'aller-retour, sans erreur à l'ouverture du fichier par Excel. Les formes DrawingML complexes doivent néanmoins être vérifiées sur vos fichiers réels.

La création d'un tableau croisé dynamique nécessite deux appels :

sheet = wb.Worksheets[0]
cache = wb.PivotCaches.Add(sheet.Range["A1:F20"])
pivot = sheet.PivotTables.Add("SalesPivot", sheet.Range["H3"], cache)

La plage source doit commencer par une ligne d'en-tête, et ces appels créent la structure du tableau croisé dynamique ; les champs de ligne et de valeur sont configurés ensuite. Consultez créer ou manipuler des tableaux croisés dynamiques dans Excel pour la configuration des champs. Dans notre test, Excel a ouvert le fichier obtenu et compté un tableau croisé dynamique.

Recalculer les formules et les valeurs mises en cache

Trois termes importent ici : la formule, son résultat mis en cache et le recalcul. Un fichier contenant une formule mais aucun résultat mis en cache paraît vide à tout lecteur qui ne calcule pas. Spire.XLS inclut un moteur de calcul, de sorte que l'appel à CalculateAllValue() calcule les résultats avant l'enregistrement, et les autres outils qui lisent le fichier peuvent les voir.

wb.LoadFromFile("model.xlsx")
wb.CalculateAllValue()
wb.SaveToFile("model_calculated.xlsx", ExcelVersion.Version2016)

openpyxl et pandas ne peuvent pas effectuer cette étape. XlsxWriter peut stocker une valeur mise en cache, mais uniquement si vous fournissez vous-même le nombre. Pour la syntaxe des formules et des exemples au niveau des cellules, consultez ajouter ou lire des formules dans Excel.

Convertir Excel en PDF, HTML et images

Pour le PDF, définissez d'abord la mise en page. Avec une orientation paysage et une mise à l'échelle ajustée à la page, le graphique de notre test tenait sur la page au lieu d'être coupé.

sheet = wb.Worksheets[0]
sheet.PageSetup.Orientation = PageOrientationType.Landscape
sheet.PageSetup.FitToPagesWide = 1
sheet.PageSetup.FitToPagesTall = 1
wb.SaveToFile("report.pdf", FileFormat.PDF)

La sortie HTML est par défaut un jeu de cadres avec un dossier de ressources. Définir HTMLOptions.ImageEmbedded = True produit un fichier unique autonome (61 Ko dans notre test, avec deux images intégrées en base64). L'export d'images est disponible via ToImage. Consultez notre guide sur la conversion d'Excel en PDF en Python pour les détails de mise en page. Les limites de l'édition d'essai sont abordées dans la section sur les licences ci-dessous.

Protéger des classeurs Excel par mot de passe

Protect("password") définit un mot de passe d'ouverture. Dans notre test, le fichier enregistré est devenu un conteneur chiffré qui ne pouvait pas être ouvert sans le mot de passe, et Spire.XLS pouvait le rouvrir lorsque le mot de passe lui était fourni. Cela convient à la diffusion de rapports et aux cas de conformité. Les protections au niveau des autorisations, comme le verrouillage de feuilles particulières, se configurent séparément ; reportez-vous à la documentation officielle pour celles-ci. Notez que dans la surcharge à deux chaînes, le second argument de SaveToFile est un délimiteur CSV, et non un mot de passe.


Construire un flux de traitement Excel multi-étapes

Un service de reporting mensuel illustre clairement la différence. La tâche : lire un fichier .xlsb amont, mettre à jour ses chiffres d'entrée, recalculer les formules, produire un PDF, chiffrer la copie Excel et l'enregistrer au format .xlsx.

pandas + openpyxl + 2 autres outils XlsxWriter Spire.XLS
Lire un .xlsb ✅ (données uniquement) ❌ ✅
Conserver les objets du classeur Non (sur le chemin xlsb) ❌ ✅
Recalculer les formules ❌ ❌ ✅
Exporter en PDF Nécessite une bibliothèque supplémentaire Nécessite une bibliothèque supplémentaire ✅
Chiffrer Nécessite une bibliothèque supplémentaire ❌ ✅
Dépendances pour la tâche 4 ou plus 1 (écriture uniquement) 1

La voie open source fonctionne, mais elle répartit la tâche sur au moins quatre outils : un pour lire le format binaire, un pour éditer, un pour générer un PDF et un pour chiffrer, plus un convertisseur si vous devez conserver les objets du classeur. Chaque transfert correspond à un fichier écrit par une bibliothèque et relu par une autre. Avec Spire.XLS, les mêmes étapes s'exécutent sur un seul objet classeur :

from spire.xls import *

wb = Workbook()
wb.LoadFromFile("monthly_input.xlsb")        # 1. read legacy format

sheet = wb.Worksheets[0]
sheet.Range["B2"].NumberValue = 125000        # 2. update an input value

wb.CalculateAllValue()                        # 3. recalculate formulas

sheet.PageSetup.Orientation = PageOrientationType.Landscape
sheet.PageSetup.FitToPagesWide = 1
sheet.PageSetup.FitToPagesTall = 1
wb.SaveToFile("monthly_report.pdf", FileFormat.PDF)   # 4. PDF

wb.Protect("s3cret")                          # 5. encrypt
wb.SaveToFile("monthly_report.xlsx", ExcelVersion.Version2016)
wb.Dispose()

A monthly sales report converted to PDF with Spire.XLS: formulas recalculated, table formatting preserved, and the chart rendered intact.

Coût total de développement et de maintenance

Nous n'avons pas mesuré le temps gagné, et cet article ne prétend pas avancer de chiffre. La différence que nous pouvons décrire est la complexité : combien d'étapes, de dépendances et d'interfaces la tâche implique.

Dimension Combinaison open source Spire.XLS
Intégration Transferts de données et conversions de formats entre outils Une seule API de classeur
Maintenance Plusieurs composants à mettre à niveau et à maintenir compatibles Une seule ligne de versions produit
Dépannage Problèmes répartis entre plusieurs projets distincts Un point d'entrée unique, plus le support de l'éditeur
Support Communauté et gestionnaires de tickets Canaux de support officiels, selon la licence

En résumé, une bibliothèque de traitement Excel, et non une dépendance. Votre projet utilisera toujours d'autres packages. Ce qui change, c'est que les étapes Excel partagent un seul modèle objet.

Vous souhaitez tester le flux vous-même ? Commencez par Free Spire.XLS for Python pour la lecture et l'écriture de xlsx et les petits rapports, ou utilisez la version d'essai de Spire.XLS for Python pour évaluer l'API complète.


Performance, déploiement, support et maintenance

Benchmarks de performance

Nous avons exécuté chaque opération dans son propre processus, avec une exécution d'échauffement écartée puis cinq exécutions mesurées, en rapportant la médiane. Le jeu de données comportait 50 000 lignes × 6 colonnes sur une machine Windows x64 (8 cœurs logiques, 7,8 Go de RAM, Python 3.12).

Tâche Méthode Médiane Mémoire maximale
Lecture pandas (calamine) 294 ms 108,2 Mo
Lecture Spire.XLS 1 456 ms 312,2 Mo
Lecture openpyxl read_only 1 704 ms 43,9 Mo
Lecture pandas (moteur openpyxl) 2 177 ms 91,9 Mo
Écriture XlsxWriter 1 744 ms 118,8 Mo
Écriture pandas → xlsxwriter 3 477 ms 118,2 Mo
Écriture openpyxl write_only 3 803 ms 79,4 Mo
Écriture Spire.XLS InsertArray (par colonne) 3 987 ms 325,2 Mo
Écriture pandas → openpyxl 5 205 ms 173,6 Mo

XlsxWriter est le writer le plus rapide, pandas avec calamine est le lecteur le plus rapide, et le mode write-only d'openpyxl utilise le moins de mémoire. Ces outils spécialisés restent le meilleur choix pour le débit brut ; Spire.XLS est l'option lorsqu'un même flux de travail nécessite plusieurs tâches Excel. Ses chiffres de lecture, d'écriture et de mémoire figurent dans le tableau ci-dessus. La raison de le choisir est la couverture, pas le débit. Ces chiffres proviennent d'une seule machine et d'une seule charge de travail : considérez-les comme une référence plutôt qu'un classement.

Déploiement et compatibilité

Aucune des quatre bibliothèques ne nécessite Microsoft Office. Excel était installé sur notre machine de test uniquement pour ouvrir les fichiers générés à des fins de validation ; aucune conversion n'a lancé de processus Excel. Les quatre ont fonctionné sous Python 3.14.6.

pandas openpyxl XlsxWriter Spire.XLS
Taille d'installation 45 Mo (+ numpy 25 Mo) 1,8 Mo 1,6 Mo 70,6 Mo
Import à froid 788 ms 524 ms 230 ms 1 027 ms

Spire.XLS représente une installation plus volumineuse, à 70,6 Mo, bien que la pile pandas soit comparable une fois numpy inclus. Pour les images de conteneurs et les démarrages à froid, mettez cela en balance avec les packages qu'il peut remplacer dans un flux multi-étapes.

Mises à jour continues et maintenance du produit

L'équipe produit Spire.XLS confirme un rythme de publication mensuel pour la gamme de produits. Pour le package Python, la fiche PyPI montre des publications régulières en 2026 : 16.2.0 (5 février), 16.4.0 (8 avril), 16.5.0 (7 mai), 16.6.0 (18 juin), 16.7.1 (17 juillet) et 16.8.2 (25 août). La version 16.8.2 a ajouté la prise en charge de la fonction de formule TEXTSPLIT et corrigé des problèmes liés à OFD, selon les notes de version officielles. Le package Python suit la même ligne de versions ; consultez les notes de version pour la version que vous prévoyez de déployer.

Support technique et ressources pour les développeurs

Spire.XLS for Python est fourni avec une documentation d'API, des exemples de code, des tutoriels, un forum de développeurs et un support par e-mail. Les licences commerciales incluent un an de mises à jour gratuites et de support technique, selon les conditions de la licence. Les délais de réponse dépendent du type de licence. Selon la page de support payant de ce produit, les licences Developer OEM, Site et Small Business indiquent 48 heures ouvrées, la licence Site OEM indique 24 heures ouvrées, et les niveaux Gold et Platinum offrent une réponse sous 24 heures avec un support expert. Confirmez les conditions actuelles de votre licence sur la page de support avant d'acheter.

Pour les déploiements en production et en entreprise, le support fait partie des critères de sélection : un chemin d'escalade défini, des objectifs de réponse documentés selon le niveau de licence et un traitement prioritaire pour les niveaux supérieurs. Les bibliothèques open source s'appuient sur des forums communautaires et des gestionnaires de tickets pour la même catégorie de problèmes.

Au-delà de la couverture de l'API, une bibliothèque commerciale est aussi une relation de maintenance. Spire.XLS for Python est activement maintenu, avec des versions régulières qui ajoutent des fonctionnalités et corrigent les problèmes signalés. Les utilisateurs sous licence reçoivent des mises à jour et un support technique selon les conditions de leur licence, et les niveaux de support supérieurs offrent des objectifs de réponse plus rapides et un traitement prioritaire.


Spire.XLS gratuit, d'essai ou commercial

Spire.XLS existe sous trois formes aux limites différentes. Choisissez selon ce que vous devez vérifier.

Édition Version Limites Idéale pour
Free Spire.XLS 14.12.4 .xlsx illimité ; .xls limité à 5 feuilles × 200 lignes ; PDF limité à 3 pages ; pas de filigrane Vérifier la lecture/écriture xlsx et les petits rapports
Spire.XLS d'essai 16.8.2 Feuille d'avertissement d'évaluation et filigrane PDF ; conversions non image limitées aux 10 premières pages Évaluer l'API et les conversions de 10 pages ou moins
Commerciale 16.8.2 Aucune des limites ci-dessus (voir le contrat de licence) La production

Dans les tests des éditions d'essai et Free, la lecture et l'écriture de xlsx n'étaient pas limitées par lignes ou feuilles. Selon les notes de limitation de l'éditeur, l'export d'images n'est pas affecté par la limite de 10 pages. Un détail pratique : après que l'édition Free a enregistré un fichier .xls, le classeur en mémoire est tronqué ; rechargez donc la source si vous devez enregistrer les deux formats.

Que fournit une licence commerciale ?

Une licence commerciale ajoute une relation de mise à jour et de support au-dessus de l'API. Elle comprend :

  • un an de mises à jour gratuites
  • un an de support technique gratuit
  • des délais de réponse dépendant du type de licence
  • une réponse sous 24 heures et un support expert aux niveaux Gold et Platinum
  • une consultation technique avant achat par e-mail et sur le forum

Quelle bibliothèque Excel Python convient à votre projet ?

Faites correspondre la bibliothèque au nombre de tâches que votre pipeline doit accomplir.

  1. Uniquement de la lecture de données : utilisez pandas avec calamine.
  2. Uniquement la génération de nouveaux rapports : utilisez XlsxWriter.
  3. Uniquement l'édition de modèles existants : utilisez openpyxl.
  4. Deux besoins avancés ou plus (formats multiples, recalcul, conversion, chiffrement, tableaux croisés dynamiques) : envisagez Spire.XLS, qui apporte aussi un rythme de publication maintenu et un canal de support de l'éditeur.

La règle que nous appliquons : comptez les tâches, pas les fonctionnalités. Une seule tâche appelle un outil spécialisé. Deux tâches constituent le moment de commencer à envisager une bibliothèque intégrée, et trois ou plus dans un même pipeline sont le cas où elle est clairement rentable. Si vous êtes à la frontière, faites passer vos fichiers réels par les deux approches. N'oubliez pas que les résultats de fidélité sont spécifiques aux fichiers testés, et que les objets complexes doivent toujours être vérifiés sur vos propres classeurs.

Prêt à l'essayer sur vos propres fichiers ? Téléchargez Free Spire.XLS for Python ou l'édition d'essai, et consultez la documentation de Spire.XLS for Python pour voir comment le flux ci-dessus se transpose à votre projet.


Questions fréquentes

Quelle bibliothèque Python peut lire et écrire des fichiers Excel sans Microsoft Office ?

Les quatre bibliothèques présentées ici fonctionnent sans Office. pandas (via calamine ou openpyxl) lit, XlsxWriter écrit, openpyxl lit et écrit des .xlsx/.xlsm, et Spire.XLS lit et écrit de nombreux formats. Dans notre test, Excel n'a servi qu'à vérifier les fichiers de sortie.

pandas vs openpyxl : laquelle utiliser ?

Utilisez pandas pour charger des données tabulaires à des fins d'analyse, et openpyxl pour modifier un classeur tout en conservant sa structure. pandas réécrit le fichier lors de l'enregistrement, de sorte que les objets comme les graphiques et les tableaux croisés dynamiques ne sont pas conservés. openpyxl les conserve dans les scénarios que nous avons testés.

openpyxl peut-il modifier un classeur sans perdre les graphiques ni les tableaux croisés dynamiques ?

Dans notre classeur de test, oui : les graphiques, images, mises en forme conditionnelles, validations de données et parties de tableaux croisés dynamiques ont été conservés et Excel a ouvert le fichier normalement. Les formes au-delà de nos fixtures, ainsi que VBA (qui nécessite keep_vba=True), n'ont pas été couverts ; testez donc vos propres fichiers.

Comment convertir Excel en PDF en Python sans Excel installé ?

Utilisez une bibliothèque qui effectue elle-même le rendu des classeurs. Avec Spire.XLS, définissez l'orientation paysage et FitToPagesWide/FitToPagesTall, puis enregistrez avec FileFormat.PDF. L'édition d'essai limite la sortie PDF à 10 pages et ajoute un filigrane.

Ces bibliothèques sont-elles gratuites pour un usage commercial ?

pandas, openpyxl et XlsxWriter sont open source. Spire.XLS est un produit commercial avec une édition Free (xlsx sans restriction ; .xls 5 feuilles × 200 lignes ; PDF 3 pages) et une édition d'essai. Vérifiez chaque licence pour votre cas d'usage.

Quelle bibliothèque prend en charge .xls, .xlsb et .ods ?

pandas avec le moteur calamine lit les trois. openpyxl ne les prend pas en charge, et XlsxWriter n'écrit que du .xlsx. Spire.XLS lit et écrit xls, xlsb et ods, mais vous devez tester sa sortie xlsb et ods avec vos propres lecteurs en aval.


Notre méthode de test

Nous avons testé le 2 novembre 2026 avec pandas 3.1.0, openpyxl 3.1.5, XlsxWriter 3.3.1 et Spire.XLS for Python 16.8.2 (essai), ainsi que Free Spire.XLS 14.12.4 pour les limites d'édition. Le matériel était sous Windows x64 avec 8 cœurs logiques et 7,8 Go de RAM. L'environnement d'exécution était Python 3.12.13, avec la version 3.14.6 utilisée pour vérifier la compatibilité.

Les fixtures de fonctionnalités étaient un classeur de trois feuilles avec 20 lignes, formules, graphiques, images, mise en forme conditionnelle, validation de données, cellules fusionnées, volets figés et filtres, plus une fixture distincte de tableau croisé dynamique. Les performances ont été mesurées sur 50 000 lignes × 6 colonnes (1,18 Mo), avec une exécution d'échauffement écartée, cinq exécutions mesurées et la médiane, chaque opération dans un processus séparé. L'écriture en masse de Spire étant orientée colonnes, son benchmark a utilisé six appels InsertArray plutôt qu'une insertion bidimensionnelle. Microsoft Excel 16.0 n'a servi qu'à ouvrir les fichiers générés et à compter les graphiques et les tableaux croisés dynamiques.

Non couverts : VBA, segments (slicers), Power Query, fichiers de plusieurs millions de lignes, concurrence, et exécutions sous Linux ou macOS. Le benchmark est mono-machine et mono-charge de travail, avec une charge CPU en arrière-plan de 12 à 22 %. Les détails de maintenance et de support proviennent de pages publiques officielles et des fiches PyPI, et non de nos tests.