Convertir XML en Excel
Transformez exports, flux et fichiers de données XML en feuille Excel mise en forme — les enregistrements répétés détectés pour vous, attributs et éléments imbriqués disposés en colonnes, et rien n'est conservé.
- Jamais conservé
- Pas de file d'attente, pas d'attente
- Sans inscription, sans filigrane
Comment ça marche
Ajoutez le XML
Déposez un fichier .xml ou collez le XML. Les fichiers Feuille de calcul XML 2003 d'Excel fonctionnent aussi.
Choisissez les enregistrements
L'élément répété — produit, article, ligne — est choisi pour vous ; tous les autres tableaux du fichier sont listés, avec un aperçu en direct.
Téléchargez
Un .xlsx avec des nombres et des dates typés par colonne, et une ligne d'en-tête en gras avec filtres.
Trouver les lignes dans une arborescence
Le XML ne connaît pas la notion de tableau : la première chose à faire est donc d'identifier quels éléments sont les enregistrements. Le signal fiable, c'est la répétition : un élément parent contenant de nombreux enfants du même nom correspond presque toujours à une liste d'enregistrements, et les éléments enfants et attributs de ces enfants deviennent les colonnes. Cela fonctionne sur l'immense majorité du XML de données — exports, flux, réponses d'API, dumps de configuration — parce qu'ils sont tous construits de la même façon.
Attributs et éléments enfants deviennent tous deux des colonnes, ce qui est nécessaire car le XML offre deux manières de dire la même chose, et chaque système choisit différemment. Un export écrit id="42" comme attribut ; un autre écrit <id>42</id> comme élément ; un troisième fait les deux dans le même document. Une grille ne fait pas la différence, et vous non plus ne devriez pas avoir à la faire : les deux arrivent donc en colonnes, les attributs étant marqués pour qu'un nom présent sous les deux formes ne crée pas de collision.
Une imbrication de plus d'un niveau est aplatie en joignant les noms d'éléments, comme pour du JSON imbriqué. Quand un enregistrement contient un enfant répété — trois lignes de commande dans une commande —, une grille ne peut pas le représenter en lignes sans dupliquer tout ce qui l'entoure : les valeurs répétées restent donc dans leur cellule. Les espaces de noms sont retirés des noms de colonnes, car une colonne appelée ns2:customerName n'aide personne dans un tableur, tandis que les valeurs elles-mêmes restent intactes.
Le XML rédigé n'a aucun tableau à trouver et se convertit mal. Une page XHTML, un article DocBook, un chapitre ePub ou un dessin SVG est un document plutôt qu'un jeu de données : sa structure est imbriquée et irrégulière par nature, et il n'y a aucun enregistrement répété à partir duquel construire des lignes. La conversion produira quelque chose, et ce quelque chose ne sera pas utile. Cette page est faite pour le XML de données, et bien faire la différence fait gagner plus de temps que n'importe quel réglage.
Si vous cherchez autre chose
Quand vous connaissez la structure, extrayez-la délibérément plutôt que de la déduire. xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml extrait exactement les champs voulus avec une expression XPath, et xq fait de même avec une syntaxe à la jq. C'est toute la différence entre une conversion qui fonctionne par chance et une conversion que l'on peut intégrer à un pipeline.
Pour les très gros fichiers, tout ce qui est fait ici a la mauvaise forme : le document est chargé entièrement en mémoire, et un XML analysé sous forme d'arbre occupe généralement plusieurs fois la taille du fichier. Les analyseurs en flux — iterparse en Python, ou SAX dans n'importe quel langage — parcourent un document de plusieurs gigaoctets avec une mémoire constante, et sont la seule approche réaliste au-delà de quelques centaines de mégaoctets.
Questions fréquentes
Comment l'outil sait-il quelle partie du XML est le tableau ?
Les enregistrements sont les éléments qui se répètent sous un même parent — chaque <book> d'un <catalog>, chaque <item> d'un canal RSS. Chaque groupe reçoit un score selon son nombre d'enregistrements et de champs ; le meilleur est choisi, et les autres restent à un clic.
Que deviennent les attributs et les éléments imbriqués ?
Chacun devient une colonne nommée d'après son chemin : un attribut id devient id, <author><name> devient author/name, et <price currency="EUR"> donne price et price/@currency. Un champ qui se répète dans un même enregistrement est réuni dans une seule cellule ou réparti sur des colonnes numérotées.
Peut-il ouvrir les fichiers Feuille de calcul XML 2003 d'Excel ?
Oui. Ces fichiers sont reconnus et convertis feuille par feuille, avec leurs nombres, dates et textes intacts.
Et si le fichier contient plusieurs tableaux — des commandes et leurs articles ?
Chaque groupe répété est proposé séparément. Un tableau imbriqué, comme les articles de chaque commande, comporte une colonne identifiant son enregistrement parent, pour que les deux feuilles puissent être rapprochées.
Mon fichier est-il conservé quelque part ?
Non. Le XML est analysé et le classeur écrit ici, sans que rien ne soit conservé.
Peut-on ouvrir sans risque un XML de provenance inconnue ?
Oui. Le fichier est lu par l'analyseur XML de votre navigateur, qui ne charge jamais d'entités externes ni de DTD et ne peut rien exécuter de ce que contient le fichier.
Bon à savoir : Les documents rédigés plutôt que les données — pages XHTML, articles DocBook — n'ont aucun tableau à trouver et se convertissent mal. Au-delà d'environ 100 MB, un fichier peut dépasser la mémoire de votre navigateur.
Intégrez cet outil à votre site
Gratuit pour tout blog, page de cours ou article d'aide. Collez un seul extrait de code et vos visiteurs pourront l'utiliser directement sur votre page.
Voir aussi : Outils tableur
Excel en XML
Des lignes en XML propre et bien formé
JSON en CSV
Du JSON imbriqué aplati en colonnes propres
CSV en Excel
Du CSV en XLSX avec de vrais nombres et de vraies dates
CSV en JSON
Du CSV en JSON typé et imbriqué
Excel en CSV
N'importe quelle feuille en CSV, dans l'encodage voulu
ODS en XLSX
Tableurs LibreOffice en classeurs Excel