Le XLS est le binaire Excel d'avant 2007. Le CSV est un tableau et rien d'autre, sans formules ni mise en forme de cellule. LibreOffice se tient entre les deux, et cette page dit exactement ce qui arrive à un fichier XLS en route vers le CSV.
Ce qui s'exécute quand un fichier XLS devient un CSV
LibreOffice 24.2, sur une machine que nous louons et que nous surveillons. Votre fichier XLS est envoyé une fois, LibreOffice s'exécute une fois, le fichier CSV revient, et aucun des deux fichiers n'est conservé. XLS vers CSV fait partie des 3649 paires sur lesquelles ce moteur a été sondé avec un vrai fichier, et c'est pour cela que cette page existe quand celles que la sonde n'a pas su prouver n'existent pas.
Ce qui survit du fichier XLS dans le fichier CSV
Chaque valeur, en tant que valeur. Ce qu'une formule a calculé atterrit dans le CSV sous la forme du nombre qu'elle a produit, prêt pour tout ce qui lit du CSV.
Un CSV que tout sait ouvrir. Pas de version, pas de schéma, pas de bibliothèque : c'est le format vers lequel on se tourne quand ce qui se trouve en face est un script plutôt qu'une personne.
Ce que la conversion XLS vers CSV vous coûte
Tout ce qui n'est pas le contenu lui-même : la mise en forme, les titres, les images, et toute structure dont le fichier XLS se servait pour se décrire. Un CSV est une chose plate, et c'est voulu.
Les formules, remplacées par ce qu'elles calculent en l'état. Mesuré sur cette paire : la fonction SOMME du fichier XLS arrive sous forme de résultat et non de formule, si bien que le CSV est un instantané et non un modèle.
Toutes les feuilles sauf la première. LibreOffice écrit une seule feuille dans un CSV parce qu'un CSV n'a aucun moyen d'en porter deux, et il prend la première. Un classeur de douze onglets revient en un seul tableau, et le moteur le dit dans un en-tête plutôt que de vous le laisser découvrir plus tard.
D'où viennent les fichiers XLS et CSV
XLS. Excel l'écrivait avant 2007, et des choses en produisent encore : vieux logiciels métier, machines que personne n'a mises à jour, exports de systèmes écrits dans les années quatre-vingt-dix. Il s'arrête à 65 536 lignes et 256 colonnes, un plafond que le XLSX a relevé d'un facteur seize, et un nombre croissant d'outils le refusent désormais franchement parce que c'est un binaire OLE2 et non une archive zip de XML.
CSV. Tout l'écrit et rien ne s'accorde dessus. Il existe une RFC, la 4180, et elle décrit l'usage courant plutôt qu'elle ne le commande : guillemets, échappements et fins de ligne varient d'un producteur à l'autre. Un CSV est le plus petit dénominateur commun, ce qui explique à la fois qu'il soit partout et qu'il surprenne.
Si un modèle doit lire le fichier CSV
La structure est ce qui subsiste du fichier XLS, et la structure est ce dont un modèle a besoin. XLS en entrée, CSV en sortie, avec l'arbre des titres intact plutôt qu'aplati en un seul long paragraphe.
XLS vers CSV, mesuré plutôt que promis
En passant XLS vers CSV sur le moteur réel avec un vrai fichier, LibreOffice a écrit 89 octets au format CSV en 0,9 secondes, machine par ailleurs au repos. C'est un fichier XLS un jour donné et non une moyenne, et c'est pourquoi le nombre est donné avec le fichier qui l'a produit.
Le verdict XLS vers CSV a été obtenu par la relecture du type interne et la recherche d'un mot témoin, c'est-à-dire que la sortie a été relue et reconnue. Le contrôle employé compte, parce qu'ils ne prouvent pas tous la même chose, et un code de statut 200 ne prouve strictement rien sur ce que le fichier CSV contient.
Le même fichier XLS, envoyé ailleurs
Les autres sorties que la sonde a mesurées à partir d'un fichier XLS, pour que le coût du choix du format CSV se lise face à quelque chose. Les tailles ne se comparent pas d'un moteur à l'autre, chaque famille ayant été sondée avec son propre fichier témoin XLS.
XLS vers PDF : 18 519 octets en 1,0 secondes, vérifié par une signature de format.
XLS vers HTML : 2 101 octets en 1,0 secondes, vérifié par la relecture du type interne et la recherche d'un mot témoin.
Les autres routes vers CSV, et ce qu'elles ont mesuré
Parmi les routes publiées vers CSV, XLS est la deuxième plus grosse sortie des 5 mesurées. Les fichiers témoins diffèrent : ce classement porte sur la sonde et non sur votre document.
ODS vers CSV : 89 octets en 1,1 secondes.
YAML vers CSV : 39 octets en moins d'un dixième de seconde.
XLSX vers CSV : 89 octets en 1,1 secondes.
JSON vers CSV : 39 octets en moins d'un dixième de seconde.
Ce que nous ne prétendrons pas sur XLS vers CSV
Un fichier XLS de plus de 25 Mo est refusé avant la fin de l'envoi plutôt qu'après, pour que vous n'attendiez pas un refus.
Une conversion XLS vers CSV qui dépasse 90 secondes est tuée, et le processus LibreOffice avec elle. Une exécution abandonnée resterait posée sur l'un des deux cœurs de la machine jusqu'à ce que quelqu'un le remarque.
LibreOffice est sérialisé exprès, un document à la fois par travailleur, parce que chaque instance de soffice prend 150 à 300 Mo sur une machine qui en a 3,8 Go. Plafond mesuré : 23 conversions XLS en vol et environ 0,9 par seconde en régime établi. Au-delà, la file répond 429 plutôt que de s'écrouler, ce qui a été testé à 32 simultanées.
Les deux tiers des paires qu'on pourrait imaginer dans cette famille n'existent pas, et il vaut mieux savoir pourquoi avant d'en chercher une. LibreOffice convertit à l'intérieur de l'application qui a ouvert votre fichier : depuis un tableur, il écrit des tableurs, du texte brut, du HTML et du PDF, et il n'écrira pas de .docx quelle que soit la façon dont on le lui demande. Il ne rend rien du tout plutôt que quelque chose de faux. Sur 113 combinaisons sondées sur ce moteur, 64 sont revenues avec un vrai fichier et le reste a été refusé net.
Cette paire fait partie des 64. Elle a été prouvée en envoyant un vrai fichier XLS par la route vivante et en lisant le CSV qui revenait : non pas son extension, ses entrailles, plus un mot témoin planté dans la source et retrouvé dans la sortie. Les propriétés nommées plus haut sur cette page viennent d'une seconde sonde qui les cherche une à une.
Le moteur dit la vérité sur la limite à la première feuille au lieu de la cacher : la réponse porte un en-tête X-Sheets-Exported qui l'annonce. On le mentionne ici parce qu'un en-tête se rate facilement et qu'une feuille manquante, non.
Un fichier XLS à la fois, choisi dans le navigateur. Il n'y a rien d'autre à régler et rien d'autre à proposer.
XLS vers CSV : les questions que l'on pose
Qu'est-ce qui convertit vraiment mon fichier XLS en CSV ?
C'est LibreOffice qui s'en charge, en 24.2, sur une machine que nous louons et que nous surveillons. Ni astuce de navigateur, ni service d'un tiers : le fichier XLS est envoyé une fois, LibreOffice s'exécute une fois, le CSV revient, et aucun des deux fichiers n'est conservé ensuite.
Combien de temps prend une conversion XLS vers CSV ?
Sur le fichier utilisé par la sonde, LibreOffice a mis 0,9 seconde et écrit 89 octets de CSV. C'est une mesure réelle sur un fichier XLS réel, pas une moyenne et pas une promesse sur le vôtre : un XLS plus gros prend plus longtemps, et au-delà de 90 secondes l'exécution est arrêtée.
Qu'est-ce que je perds en passant du XLS au CSV ?
Celle qu'il faut connaître en premier : tout ce qui n'est pas le contenu lui-même, la mise en forme, les titres, les images, et toute structure dont le fichier XLS se servait pour se décrire. Un CSV est une chose plate, et c'est voulu.
Pourquoi mon CSV est-il tellement plus petit que le XLS ?
Parce qu'un CSV porte le contenu et rien d'autre. La mise en forme, les polices, les images, les titres et la structure de fichier qui les entourait ont tous disparu, par choix. Les formules aussi, remplacées par les valeurs qu'elles avaient calculées au moment de la conversion.
Mon classeur avait plusieurs feuilles. Où sont les autres ?
Seule la première est dans le CSV, parce qu'un CSV est un tableau unique et n'a aucun moyen d'en porter un second. LibreOffice prend la première feuille. S'il vous les faut toutes, convertissez plutôt en ODS ou en XLSX, ou lancez la conversion une fois par feuille depuis votre propre fichier.
La conversion XLS vers CSV est-elle gratuite ?
Il y a une franchise gratuite chaque mois, et une conversion XLS vers CSV coûte un demi-crédit dessus. Quand la franchise est épuisée, l'outil le dit et s'arrête, plutôt que de vous remettre discrètement un CSV moins bon.