Aller au contenu

Des outils tableur qui respectent les types de données

Neuf outils pour faire passer des tableaux entre Excel, CSV, JSON, XML, PDF et OpenDocument. Les trois qui ont besoin d'un vrai tableur envoient le fichier à notre serveur, qui le supprime dès que votre téléchargement est prêt.

9 outils, sans inscription, sans filigrane

Si un système réclame un CSV, commencez par Excel en CSV ; si un CSV arrive dans Excel entassé dans une seule colonne illisible, CSV en Excel ; si les données partent vers du code, CSV en JSON ou JSON en CSV. Les anciens fichiers .xls et les classeurs OpenDocument passent par XLS en XLSX, ODS en XLSX et XLSX en ODS, qui conservent mise en forme et graphiques, et PDF en Excel récupère un tableau dans un rapport dont personne ne vous a envoyé la source. Les notes ci-dessous expliquent ce qui se cache derrière presque tous les problèmes de conversion de tableur : la différence entre ce qu'une cellule contient et ce qu'elle vous montre.

Ce que contient vraiment une cellule

Une cellule de tableur contient deux choses distinctes : une valeur et un format de nombre. La valeur 0,15 peut s'afficher 15 %, 0,15, 0,15 € ou 15,00 %, et aucun de ces affichages ne modifie la valeur d'un iota. C'est la chose la plus utile à savoir sur les tableurs, et c'est pourquoi Excel en CSV vous demande de choisir entre « Comme affiché dans Excel » et « Nombres bruts, dates ISO » au lieu de deviner. « Comme affiché dans Excel » écrit exactement le texte visible à l'écran — 15/03/2024, 1 234,50, 12 % —, ce que fait l'Enregistrer sous d'Excel et ce qu'attend une personne qui lit le CSV. « Nombres bruts, dates ISO » écrit des nombres simples et des dates ISO, ce qu'attend une base de données ou un script. Choisissez le mauvais et l'import échoue d'une manière qui fait croire à des données corrompues.

Les dates sont des nombres déguisés en dates. Une cellule de date contient un numéro de jour, et l'origine à partir de laquelle il compte dépend du fichier : les classeurs créés par Excel sous Windows comptent à partir de 1900, ceux de l'ancien Excel pour Mac à partir de 1904, et les deux sont décalés de 1 462 jours. Le système 1900 est encore plus étrange : il croit que le 29 février 1900 a existé, un bug hérité de Lotus 1-2-3 et conservé depuis pour la compatibilité. Les outils de cette page lisent l'indicateur d'origine propre à chaque classeur et reproduisent ce faux jour bissextile exactement là où il se trouve, c'est pourquoi une date convertie ici correspond à ce qu'affiche Excel au lieu de glisser de quatre ans et un jour.

Une formule et son résultat sont stockés côte à côte. Un classeur conserve le texte de la formule et la dernière valeur calculée. Les conversions de classeur à classeur — ODS en XLSX, XLS en XLSX, XLSX en ODS — transportent les formules elles-mêmes, traduites d'un vocabulaire de fonctions à l'autre, si bien que la feuille se recalcule toujours quand vous la modifiez ; les quelques fonctions qui n'existent que d'un côté s'affichent #NOM? jusqu'à ce que vous les remplaciez. Tout ce qui quitte le monde du tableur — CSV, JSON, XML — ne transporte que le résultat calculé, car aucun de ces formats n'a la moindre notion de formule.

Le CSV ne peut pas représenter l'essentiel d'un classeur, et faire comme si c'était possible, c'est là que des données se perdent. Il n'a pas de feuilles, donc chaque feuille devient un fichier à part (et un ZIP si vous les voulez toutes). Il n'a pas de types de cellule, donc chaque champ est du texte jusqu'à ce que quelque chose devine. Il n'a ni formats, ni formules, ni graphiques, ni images, ni couleurs, ni largeurs de colonne. Les cellules fusionnées doivent être résolues d'une façon ou d'une autre — la valeur dans la première cellule, ou répétée sur toute la fusion. Et il n'enregistre ni son séparateur, ni son séparateur décimal, ni son encodage : voilà pourquoi un fichier européen à points-virgules avec des virgules décimales atterrit dans une seule colonne dans un Excel américain, et pourquoi les accents se transforment en caractères illisibles si le fichier ne commence pas par une marque d'ordre des octets (BOM).

Le texte qui ressemble à un nombre, c'est là que les vrais dégâts se produisent. Excel devine cellule par cellule quand vous ouvrez un CSV : le code postal 01234 perd son zéro, un numéro de commande à 16 chiffres devient 1,23457E+15 sans retour possible, et le nom de gène SEPT2 devient une date — un problème assez grave pour que la communauté de la génétique renomme ses gènes. CSV en Excel décide une seule fois par colonne, à partir de toutes ses valeurs, et ne convertit que si toute la colonne est d'accord ; tout ce qui commence par des zéros, et tout entier trop long pour qu'un nombre JavaScript le contienne exactement, reste du texte. JSON en CSV applique le même soin en sens inverse et recopie les identifiants 64 bits chiffre par chiffre, là où la plupart des convertisseurs les arrondissent.

JSON et XML perdent chacun quelque chose. JSON n'a aucun type date : les dates voyagent sous forme de texte et le code qui les reçoit doit savoir ce qu'il a sous les yeux. Le XML de données ne transporte que des valeurs, sans mise en forme, graphiques ni images — exactement ce que veut un flux d'import, et pas ce que vous voulez si le but était de garder le classeur intact.

Quand un navigateur n'est vraiment pas le bon outil

Sept de ces outils n'envoient jamais votre fichier nulle part : Excel en CSV, CSV en Excel, CSV en JSON, JSON en CSV, XML en Excel, Excel en XML et PDF en Excel. Rien n'est conservé, ce qui compte quand le fichier est une paie ou une liste de clients. Quatre sont différents — Excel en PDF, ODS en XLSX, XLS en XLSX et XLSX en ODS confient le fichier à notre serveur, car mettre en page une feuille imprimée, ou faire passer polices, couleurs, mise en forme conditionnelle et graphiques d'un format à l'autre, n'est pas quelque chose qu'une page web peut simuler. Ces fichiers transitent par une connexion chiffrée, sont convertis, puis supprimés dès que votre téléchargement est prêt. Si le serveur est injoignable, chacun se rabat sur son propre convertisseur, qui conserve valeurs, formules, formats de nombre, cellules fusionnées et largeurs de colonne, mais pas les polices, les couleurs ni les graphiques — et il vous le signale.

La taille. Les outils qui fonctionnent dans le navigateur gardent tout le tableau en mémoire : la limite est donc la mémoire dont dispose votre onglet — à l'aise jusqu'à quelques dizaines de mégaoctets, laborieux au-delà d'une centaine, et sans espoir pour un export de plusieurs gigaoctets. Les convertisseurs de classeurs acceptent jusqu'à 50 MB par fichier et Excel en PDF jusqu'à 40 MB, et tous le disent avant de convertir plutôt qu'après. Une feuille Excel s'arrête elle-même à 1 048 576 lignes, une limite du format et non de notre part ; CSV en Excel continue sur des feuilles supplémentaires en répétant l'en-tête au lieu de tronquer vos données en silence.

Le vrai travail sur les données. Un convertisseur n'est pas une base de données. Joindre deux tableaux, dédoublonner, agréger, filtrer dix millions de lignes ou analyser un export désordonné sont des tâches pour des outils conçus pour cela, et les gratuits sont excellents : csvkit pour opérer rapidement un CSV en ligne de commande, Miller pour la même chose sur JSON et CSV ensemble, qsv pour la vitesse sur des fichiers énormes, DuckDB pour lancer du vrai SQL directement sur un fichier CSV ou Parquet, pandas si vous êtes déjà en Python.

Les macros, et tout ce qui s'exécute. Le VBA ne peut pas passer dans un .xlsx, qui n'a tout simplement aucun endroit où le mettre, et il ne passe pas non plus dans un .ods, car LibreOffice n'exécute qu'une partie du VBA et les différences apparaîtraient sous forme de chiffres faux plutôt que d'erreurs. Si un classeur dépend de ses macros, gardez l'original à côté de la copie convertie. Les fichiers protégés par mot de passe doivent d'abord en être libérés, dans le programme qui l'a défini.

L'automatisation. Ces outils fonctionnent quand une personne clique. Convertir un flux chaque nuit est un travail pour la ligne de commande : LibreOffice en mode headless gère tous les formats de cette page.

Choisir entre des outils aux noms proches

Excel en CSV ou Excel en XML. Les deux lisent un classeur et écrivent un fichier de données plat : c'est la destination qui décide. Le CSV va vers les tableurs, les bases de données et tout ce qui dit « envoyez un CSV ». Le XML va vers les imports et les intégrations qui imposent des noms d'éléments — vous définissez le nom de la racine et des lignes, les en-têtes deviennent des noms d'éléments, et les valeurs sortent en nombres simples et dates ISO. Excel en XML peut aussi écrire du XML Spreadsheet 2003, qui est tout autre chose : un format qu'Excel rouvre comme un classeur, pour quand un système demande de l'« Excel XML » et non votre propre XML de données.

CSV en Excel ou CSV en JSON. Même analyseur, même détection des types colonne par colonne, sortie différente. CSV en Excel produit un .xlsx avec de vraies dates et de vrais nombres que vous pouvez additionner et trier, et une ligne d'en-tête figée et filtrable — pour les personnes. CSV en JSON produit un tableau d'objets, un tableau de tableaux, un objet indexé par clé ou du JSON Lines — pour le code. Si la réponse est « les deux », convertissez en Excel pour les humains et en JSON pour le pipeline ; ils concorderont, car les types de colonne ont été décidés de la même façon.

XML en Excel ou Excel en XML. Pas simplement deux sens opposés. XML en Excel doit d'abord trouver le tableau : il cherche les éléments qui se répètent sous un même parent — chaque <book> d'un catalogue, chaque <item> d'un flux RSS —, note chaque groupe et vous propose les autres à un clic, puis aplatit attributs et éléments imbriqués en colonnes nommées d'après leur chemin. Excel en XML n'a rien à chercher, car vos lignes sont déjà les enregistrements.

XLS en XLSX ou CSV en Excel. Les deux aboutissent à un classeur moderne. XLS en XLSX met à niveau un vrai fichier binaire Excel 97–2003 et conserve tout ce qu'il contient — feuilles, formules, mise en forme, graphiques. CSV en Excel construit un classeur à partir de texte brut qui n'a jamais rien eu de tout cela. Le recoupement, c'est le cas intermédiaire agaçant : bien des applications web exportent un tableau HTML ou un fichier XML et le nomment .xls. XLS en XLSX les reconnaît pour ce qu'ils sont vraiment et enregistre un vrai classeur.

PDF en Excel ou Excel en PDF. Deux sens opposés, et un seul des deux est fiable. Excel en PDF est un travail de mise en page : le classeur connaît déjà sa zone d'impression, ses sauts de page et sa mise en forme, et le convertisseur les dessine. PDF en Excel est le sens difficile, car un PDF enregistre où chaque caractère a été tracé et rien sur la cellule à laquelle il appartenait — les colonnes sont déduites de la position. Cela fonctionne bien sur des tableaux propres et quadrillés, demande des retouches là où des cellules sont fusionnées ou s'étalent sur plusieurs lignes, recrée les valeurs mais pas la mise en forme ni les formules, et donne à chaque page du PDF sa propre feuille. Si le classeur d'origine existe encore, demandez-le.

ODS en XLSX ou Excel en CSV pour un fichier .ods. Excel en CSV ouvre sans problème un .ods et vous en donne les valeurs. ODS en XLSX garde le classeur sous forme de classeur, avec ses formules, sa mise en forme et ses graphiques. Utilisez le convertisseur quand quelqu'un doit travailler dans le fichier, et la voie du CSV quand un système a besoin d'en extraire les chiffres.

Sur quoi reposent ces outils

Les moteurs open source qui font le vrai travail, et les spécifications qu'ils mettent en œuvre.

  • SheetJSApache-2.0 — lit et écrit tous les formats de classeur de ce site.
  • LibreOffice CalcMPL-2.0 — gère les conversions qu'un navigateur ne sait pas faire, lorsqu'il est disponible.
  • RFC 4180Specification — est ce qui se rapproche le plus d'un standard pour le CSV, et explique pourquoi les fichiers divergent.

Questions fréquentes

Mes feuilles de calcul sont-elles conservées quelque part ?

Pas avec Excel en CSV, CSV en Excel, CSV en JSON, JSON en CSV, XML en Excel, Excel en XML ou PDF en Excel : ces outils lisent votre fichier et écrivent le résultat dans cet onglet, et rien n'est envoyé nulle part. Excel en PDF et les trois convertisseurs de classeurs envoient bien le fichier à notre serveur par une connexion chiffrée, car ils ont besoin d'un vrai tableur pour mettre une page en forme ou faire passer mise en forme et graphiques d'un format à l'autre ; il est converti puis supprimé immédiatement, et rien n'est conservé, journalisé ni partagé.

Pourquoi Excel abîme-t-il mon CSV quand je l'ouvre d'un double-clic ?

Parce qu'Excel devine chaque cellule indépendamment, sans jamais demander. Les zéros de tête disparaissent, les longs identifiants passent en notation scientifique, les dates basculent entre jour en premier et mois en premier, et un fichier à points-virgules atterrit dans une seule colonne. CSV en Excel décide une fois par colonne à partir de toutes ses valeurs et vous montre chaque décision avant le téléchargement, pour que vous puissiez la corriger au lieu de la découvrir plus tard.

Pourquoi des caractères bizarres apparaissent-ils à la place de mes accents ?

Un CSV n'enregistre pas son propre encodage, donc Excel se rabat sur l'ancienne page de codes régionale de votre ordinateur, sauf si le fichier commence par une marque d'ordre des octets (BOM). Choisissez « UTF-8 avec BOM (pour Excel) » dans Excel en CSV, et accents, cyrillique, arabe, chinois et emoji s'ouvrent tous correctement. L'UTF-8 simple, sans cette marque, est le bon choix pour les bases de données et le code, qui n'en veulent pas.

Que deviennent mes formules ?

De classeur à classeur, elles sont transportées sous forme de formules et continuent de calculer ; une fonction qui n'existe que d'un côté s'affiche #NOM? jusqu'à ce que vous la remplaciez. Vers CSV, JSON ou XML, seul le résultat calculé est écrit, car ces formats n'ont aucun endroit où mettre une formule. Dans l'autre sens, une cellule qui commence par = est écrite comme du texte, jamais comme une formule active, si bien qu'un CSV malveillant ne peut rien exécuter à l'ouverture du classeur.

Y a-t-il une limite de taille ou une limite quotidienne ?

Pas de compte, pas de quota, pas de plafond quotidien. Les outils qui fonctionnent dans le navigateur sont limités par la mémoire de votre appareil ; les convertisseurs de classeurs acceptent des fichiers jusqu'à 50 MB et Excel en PDF jusqu'à 40 MB, et tous le disent clairement si le vôtre est plus gros.

Y aura-t-il un filigrane ou une limite de lignes ?

Non. Rien ici ne plafonne le nombre de lignes, n'appose de mention d'essai sur une feuille ni ne tronque vos données. La seule limite de lignes est celle d'Excel lui-même, 1 048 576, et les fichiers plus longs continuent sur des feuilles supplémentaires au lieu d'être coupés. Ce sont les publicités sur la page qui permettent la gratuité.