6 min de lecture
Excel vers XML : créer un fichier XML à partir d'un modèle
Par Quentin Delepierre, consultant Salesforce Commerce Cloud
« Convertir Excel en XML » n'a de sens qu'avec un format cible : le même tableau peut devenir mille XML différents, et le système qui importera le vôtre n'en accepte qu'un. ExcelifyXML ne devine pas ce format : il le lit dans un XML modèle, un exemple du fichier attendu, puis écrit vos données dans cette forme. Voici la méthode, ce qu'il vous faut et ses limites.
Ce qu'il vous faut
- Vos données dans un tableur (Excel, Google Sheets, LibreOffice), un enregistrement par ligne : un produit, une URL, un prix.
- Un XML modèle : un exemple du fichier attendu, avec au moins deux enregistrements et tous les champs dont vous avez besoin. Le plus sûr est un export de quelques enregistrements depuis le système qui importera le fichier (Business Manager, Magento, PrestaShop…), ou l'exemple fourni par la documentation de la plateforme cible.
- Un compte ExcelifyXML gratuit : transformer le modèle coûte 1 crédit, la reconstruction est gratuite et illimitée.
Pourquoi un modèle ?
Un tableau est plat ; un XML a une structure : une racine, des balises imbriquées, des attributs, des espaces de noms (g:), parfois un en-tête. Rien de tout cela n'est dans vos colonnes Excel.
Le modèle apporte cette structure. ExcelifyXML le transforme en deux fichiers : data.csv, les colonnes à remplir, et skeleton.json, la structure qui servira à écrire votre XML.
Les étapes
- Déposez votre XML modèle sur la page Upload. Dans l'aperçu gratuit, vérifiez qu'il y a un enregistrement par ligne (un produit, une URL…). S'il annonce une seule ligne, choisissez la balise de l'enregistrement avec « Pas la bonne ligne ? » (item dans un flux Google Shopping). Confirmez (1 crédit) et décompressez le bundle : data.csv et skeleton.json.
- Ouvrez data.csv. La première ligne donne le nom de chaque colonne : gardez-la, et supprimez les lignes du modèle.
- Collez vos données colonne par colonne, sous le bon nom. Une cellule vide ne crée pas de balise. Pour un champ que le modèle n'a pas, ajoutez une colonne au nom de la balise, avec son préfixe s'il en a un (g:color) : la balise est créée à la fin de chaque enregistrement. Un nom qui ne peut pas être celui d'une balise (avec une espace, par exemple) arrête la reconstruction, qui vous le signale.
- Enregistrez au format « CSV UTF-8 » : c'est le format qui garantit la lecture de vos accents, surtout si le modèle n'en contient pas (le « CSV » simple d'Excel pour Mac les brouillerait). Sur la page Reconstruction, choisissez « Fichiers séparés » et déposez ce data.csv avec le skeleton.json du modèle : vous récupérez votre XML.
Un exemple : un flux Google Shopping
Le modèle compte deux produits. Leurs lignes sont remplacées par trois produits du tableur, et une colonne g:color est ajoutée. Le titre, le lien et la description du flux viennent du modèle.
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>Ma boutique</title>
<link>https://www.exemple.fr</link>
<description>Flux produits</description>
<item>
<g:id>MODELE-1</g:id>
<title>Exemple 1</title>
<g:price>1.00 EUR</g:price>
<g:availability>in_stock</g:availability>
</item>
<item>…</item>
</channel>
</rss>g:id ; title ; g:price ; g:availability ; g:color
SKU-1 ; Veste ; 59.90 EUR ; in_stock ; bleu
SKU-2 ; Pull ; 39.90 EUR ; ;
SKU-3 ; Chemise ; 29.90 EUR ; out_of_stock ; vert <item>
<g:id>SKU-1</g:id>
<title>Veste</title>
<g:price>59.90 EUR</g:price>
<g:availability>in_stock</g:availability>
<g:color>bleu</g:color>
</item>
<item>
<g:id>SKU-2</g:id>
<title>Pull</title>
<g:price>39.90 EUR</g:price>
</item>Ce que le modèle décide
- Tout ce qui est hors des lignes (racine, espaces de noms, titre du flux, en-tête du catalogue) est repris du modèle tel quel : corrigez-le dans le XML modèle avant de le transformer.
- Chaque enregistrement suit la forme du modèle : mêmes balises, même ordre ; les colonnes ajoutées viennent à la fin.
- Les listes d'un enregistrement (plusieurs images, plusieurs prix) prennent les colonnes numérotées du modèle : image[0], image[1]… Une colonne numérotée ajoutée au-delà ne peut pas être écrite : la reconstruction s'arrête et vous la signale. Prenez un modèle dont un enregistrement a le nombre maximal d'éléments.
- Gardez les codes EAN et GTIN en texte quand vous les collez dans Excel, sinon il les passe en notation scientifique.
- Le fichier suit la forme du modèle, pas un schéma : faites-le valider par le système qui l'importe, d'abord sur un environnement de test.
Et la prochaine fois ?
Gardez data.csv et skeleton.json. Pour le prochain envoi, mettez à jour les lignes et reconstruisez : pas besoin de transformer à nouveau le modèle, ni de dépenser un crédit.
Transformez votre XML modèle en CSV à remplir :
Transformer un fichier