Convertir un XLSX en JSON

Un objet par ligne, les en-têtes en clés, les dates en ISO 8601.

Traité sur cet appareil · aucun envoi de fichier

XLSXXLSMXLSBXLSODSVous pouvez aussi coller (Ctrl+V)Confortable jusqu’à 50 Mo

540 ko à télécharger la première fois, puis conservé sur cet appareil.détails

Moteur : SheetJS · un seul téléchargement pour tous les outils tableur.

À quoi sert cette page

Alimenter une API, remplir une base, faire tourner un script : tout cela réclame du JSON, quand la donnée arrive en classeur. La conversion paraît triviale jusqu’à ce que les dates ressortent en 46027, parce qu’une date Excel n’est rien d’autre qu’un compteur de jours. Cette page les écrit en clair, garde les nombres en nombres, et fait tout le travail dans votre navigateur — rien du classeur n’est transmis.

On dit aussi : convertir xlsx en json, excel vers json.

Comment faire

  1. Déposez un ou plusieurs classeurs.
  2. Choisissez l’indentation : lisible pour relire, compacte pour transmettre.
  3. Lancez la conversion et récupérez le JSON.

Questions fréquentes

Pourquoi mes dates ressortaient-elles en 46027 ailleurs ?

Parce qu’une date Excel est stockée comme le nombre de jours écoulés depuis le 30 décembre 1899 : 46027 est le 5 janvier 2026. Seul le format d’affichage de la cellule dit qu’il s’agit d’une date, et beaucoup de convertisseurs l’ignorent. Ici, ce format est lu, et la date est écrite en ISO 8601 — non ambiguë et triable telle quelle.

Quelle forme aura mon JSON ?

Si le classeur n’a qu’une feuille, vous obtenez directement un tableau d’objets : [{"référence":"A-01",…}]. S’il en a plusieurs, vous obtenez un objet dont chaque clé est un nom d’onglet et chaque valeur le tableau correspondant. La note affichée sous le résultat vous dit laquelle des deux formes vous avez.

Que deviennent les cellules vides ?

Elles valent `null`, ce qui les distingue d’une chaîne vide ou d’un zéro. Un stock à 0 reste bien le nombre 0 : c’est une information, et la confondre avec une absence de donnée fausserait tout comptage.

Mes montants perdent leur symbole €, est-ce normal ?

Oui. Le « € », le séparateur de milliers et le nombre de décimales sont une mise en forme du classeur, pas la valeur. Un montant affiché « 1 234,50 € » vaut 1234.5, et c’est ce nombre-là qui est utilisable dans un programme.

Et si le classeur contient des formules ?

C’est leur dernier résultat enregistré qui est repris — rien n’est recalculé. Une formule en erreur (#N/A, #DIV/0!) est recopiée en texte plutôt que rendue vide, pour que le problème se voie dans le JSON au lieu de passer pour une donnée manquante.

Bon à savoir

  • La première ligne de chaque feuille donne les clés des objets. Une colonne sans titre est nommée « colonne 3 », deux colonnes homonymes sont distinguées par un suffixe.
  • Forme du résultat : une feuille unique donne un tableau nu ; plusieurs feuilles donnent un objet dont les clés sont les noms d’onglets. C’est prévisible, et indiqué sous le résultat.
  • Les dates sortent en ISO 8601 : « 2026-01-05 », ou « 2026-01-05T14:30:00 » quand la cellule porte aussi une heure. Dans le fichier, cette date n’est que le nombre 46027 : c’est le format d’affichage qui en fait une date, et ce format dépend de la machine. L’écriture ISO n’en dépend pas.
  • Les nombres restent des nombres JSON, les cases à cocher des booléens, une cellule vide devient `null`. Un zéro reste un zéro : c’est une donnée, pas une absence.
  • La mise en forme n’est pas transportée : un montant affiché « 1 234,50 € » ressort en 1234.5. Le symbole et le séparateur appartiennent au classeur, la valeur à la donnée.
  • Les formules ne sont pas recalculées : leur dernière valeur enregistrée est reprise.
  • Une erreur de formule (#N/A, #DIV/0!) est recopiée telle quelle en texte, plutôt que rendue vide — une cellule vide ferait croire à une donnée absente.

Outils liés