mygems

CSV ou XLSX : quel format choisir, et quand

Le CSV est un fichier texte avec des virgules. Le XLSX est un fichier compressé d'application. Cette différence décide de tout : taille, formules, dates, compatibilité.

Par uos ·

Une phrase en résume l'essentiel : le CSV est un fichier texte avec des virgules dedans ; le XLSX est un dossier zippé de XML que seul un tableur comprend. Presque toutes les différences pratiques en découlent.

La bonne question est rarement « lequel est le meilleur ». C'est « à qui je donne ce fichier, et qu'en restera-t-il en chemin ».

La réponse rapide

  • Vous donnez des données à un programme (import, API, script, base de données) : CSV.
  • Vous donnez un document à une personne (mise en forme, formules, plusieurs feuilles) : XLSX.
  • Le fichier est gros (disons plus de 100 Mo ou 500 000 lignes) : CSV.
  • Les valeurs doivent revenir exactement comme elles sont parties (codes postaux, codes produit, numéros de téléphone, longs identifiants) : CSV, et le préciser, parce que c'est le tableur qui les recevra qui va les abîmer.

Ce que sont vraiment ces deux formats

Un CSV contient une ligne par enregistrement, des valeurs séparées par des virgules, et des guillemets autour de toute valeur qui contient une virgule. On peut en lire un dans un éditeur de texte. On peut en écrire un avec echo. Il existe une spécification, la RFC 4180, et un accord quasi général pour en ignorer certaines parties, ce qui explique que les séparateurs varient selon les pays et que les CSV cassés forment un sujet à part entière.

Il stocke des valeurs, et rien d'autre. Pas de types, pas de formats, pas de formules, pas de couleurs, pas de deuxième feuille. Une cellule contenant 007 et une cellule contenant le nombre sept sont indiscernables une fois écrites : ce ne sont que les caractères entre deux virgules, et la suite dépend entièrement de ce qui les lit.

Un XLSX est une archive ZIP. Renommez-en un en .zip, décompressez-le, et vous obtenez un dossier de XML : un fichier par feuille, une table de chaînes partagées, une table de styles, des fichiers de relations. Il stocke tout ce qu'un tableur sait faire : types de cellules, formats de nombres, formules et leurs résultats en cache, graphiques, mise en forme conditionnelle, volets figés, macros dans la variante .xlsm.

Côte à côte

CSVXLSX
Type de fichierTexte brutArchive XML compressée
Limite de lignesAucune1 048 576 par feuille
Limite de colonnesAucune16 384
Plusieurs feuillesNonOui
FormulesNonOui
Mise en forme, graphiquesNonOui
Types de donnéesAucun : tout est du texteExplicite pour chaque cellule
Taille, 1 M de lignes × 10 colonnes~150 Mo~40 Mo
S'ouvre dans un éditeur de texteOuiNon
Lisible dans 20 ansPresque certainementProbablement
Diffs dans gitPropresImpossibles

Deux lignes méritent des précisions.

La taille, et pourquoi la réponse s'inverse

Le XLSX est compressé : pour les mêmes données, il est donc généralement plus petit sur le disque, souvent de trois à quatre fois. Le CSV paraît alors un mauvais choix pour les gros volumes, ce qui est exactement l'inverse de la réalité.

Pour un gros fichier, ce qui compte n'est pas la taille sur le disque, mais ce qui se passe à l'ouverture. Un XLSX doit être décompressé et analysé pour construire un modèle d'objets avant que vous voyiez la première ligne ; tout finit en mémoire. Un CSV peut se lire ligne par ligne : un outil peut donc traiter en flux un fichier de 5 Go qu'il ne pourrait jamais charger entièrement. C'est pourquoi toute réponse à « comment traiter ce fichier avec DuckDB » commence par un CSV, et pourquoi la limite de lignes ci-dessus compte : un export de trois millions de lignes ne peut pas tenir dans un XLSX sur une seule feuille, quelle que soit sa taille.

Les types, et l'aller-retour qui dévore vos données

C'est la différence qui coûte vraiment du travail.

Comme le CSV ne porte aucun type, un tableur doit deviner à l'import. Ces suppositions sont systématiques, et systématiquement fausses de quatre façons :

  • 01234 devient 1234 : le zéro initial d'un code postal disparaît.
  • 4019283746501928 devient 4.01928E+15 : un identifiant en notation scientifique, dont les derniers chiffres sont perdus, pas masqués.
  • 3/4/2026 devient le 4 mars ou le 3 avril selon les paramètres régionaux.
  • MAR1, SEPT2, DEC5 deviennent des dates. En 2020, des chercheurs en génétique ont renommé 27 gènes humains à cause de cela.

Ouvrez un CSV dans Excel, réenregistrez-le en CSV, et ces changements sont désormais définitifs dans le fichier. Le CSV n'a pas perdu les données. Le tableur avec lequel vous l'avez ouvert, si. D'où l'intérêt de lire un CSV avec un outil qui le lit comme un CSV, et non comme un document de tableur :

CSV File Viewer - Smart CSViPhone et iPad · Android

Lit le fichier comme un CSV au lieu de l'importer : pas de conversion de types, pas de devinettes sur les dates selon la région, et des requêtes SQL ou en langage courant sur les valeurs telles qu'elles sont écrites.

Ce que ça fait

Choisir selon la situation

Utilisez le CSV quand :

  • Quelque chose d'automatisé est à l'autre bout : un import en base, un script, une API.
  • Le fichier est gros, ou grossit.
  • Les données doivent faire l'aller-retour octet pour octet.
  • Il va dans un gestionnaire de versions et vous voulez voir ce qui a changé.
  • Vous avez besoin qu'il reste lisible dans dix ans sans hypothèse sur les logiciels.

Utilisez le XLSX quand :

  • Une personne l'ouvre, et la mise en page fait partie du message.
  • Des formules doivent rester actives.
  • Les données comportent vraiment plusieurs feuilles.
  • Les types de cellules comptent et vous ne maîtrisez pas ce qui l'ouvrira. C'est l'argument honnête en faveur du XLSX : des types que le destinataire ne peut pas mal interpréter.
  • Vous avez besoin de graphiques, de filtres ou de mise en forme conditionnelle dans le fichier lui-même.

N'utilisez ni l'un ni l'autre quand : le jeu de données dépasse ce qu'un tableur peut contenir et que vous l'interrogerez à répétition. C'est le travail de Parquet, ou d'une base de données. Parquet est orienté colonnes, typé et compressé, et DuckDB comme pandas le lisent nativement.

Ce que l'on croit à tort

« Le CSV est un format Excel. » Non ; Excel se contente de l'ouvrir, et c'est pour cela que la conversion de types ci-dessus se produit. Le CSV précède Excel de vingt ans.

« XLS et XLSX, c'est pareil. » Le XLS est le format binaire d'avant 2007, qu'on voit encore arriver de vieux systèmes. Le XLSX est son remplaçant, basé sur OOXML. Si on vous remet un .xls, convertissez-le. Excel récent l'ouvre avec des avertissements et certains outils le refusent purement et simplement.

« Le XLSX est plus sûr, c'est un vrai format. » Le XLSX peut contenir des macros, des liens externes et des charges DDE ; le CSV est du texte inerte, hormis l'injection de formules, où une valeur commençant par =, +, - ou @ est exécutée par le tableur qui l'ouvre. Les deux demandent de la prudence, dans des directions différentes.

« Convertir ne fait rien perdre. » De XLSX vers CSV, toutes les formules disparaissent (on garde la dernière valeur calculée), ainsi que toute feuille au-delà de la première et toute la mise en forme. De CSV vers XLSX, on ajoute des types qui n'ont jamais été dans les données, et c'est là que les dégâts se produisent. Convertir un CSV en Excel sur un téléphone explique comment le faire sans casse.

La seule habitude qui vaille la peine

Quand vous envoyez un CSV contenant des codes, des identifiants ou des dates, dites-le dans le message : « ouvrez-le avec une étape d'import et réglez la colonne ID sur Texte ». Deux lignes d'e-mail évitent l'échec de qualité des données le plus courant au bureau, et aucun choix de format ne l'évite à lui seul.

Questions

CSV ou XLSX : lequel est le meilleur ?
Aucun n'est meilleur en général ; ils répondent à des questions différentes. Le CSV sert à confier des données à un programme : c'est du texte brut, sans limite de lignes, lisible en flux, et il revient inchangé. Le XLSX sert à confier un document à une personne : il contient des formules, une mise en forme, plusieurs feuilles et des types de cellules explicites.
Pourquoi Excel modifie-t-il mes nombres quand j'ouvre un CSV ?
Parce qu'un CSV ne stocke aucun type, donc Excel les devine. Les zéros initiaux des codes postaux sont supprimés, les identifiants de plus de 15 chiffres passent en notation scientifique et perdent définitivement leurs derniers chiffres, et un texte comme MAR1 devient une date. Réenregistrez le fichier en CSV et ces changements sont dans le fichier.
Le XLSX est-il plus petit que le CSV ?
En général oui sur le disque, car le XLSX est une archive compressée, souvent trois à quatre fois plus petite pour les mêmes données. Mais il doit être entièrement décompressé et chargé en mémoire avant que vous voyiez quoi que ce soit, alors qu'un CSV peut être lu en flux, ligne par ligne : le CSV gère donc des fichiers bien plus gros que le XLSX.
Combien de lignes un fichier XLSX peut-il contenir ?
1 048 576 lignes et 16 384 colonnes par feuille, une limite structurelle du format, pas une limite de mémoire. Un CSV n'a aucune limite de lignes, ce qui explique que les exports de plusieurs millions de lignes soient presque toujours en CSV.
Convertir un CSV en XLSX fait-il perdre quelque chose ?
Pas de données à proprement parler, mais la conversion attribue des types qui n'ont jamais été dans le CSV, et c'est là que les codes postaux et les longs identifiants sont abîmés. Dans l'autre sens, la perte est plus visible : de XLSX vers CSV, les formules disparaissent (seules leurs dernières valeurs calculées restent), et toutes les feuilles sauf une sont écartées, avec toute la mise en forme.
Quelle est la différence entre XLS et XLSX ?
Le XLS est l'ancien format binaire d'Excel, d'avant 2007 ; le XLSX est le format Office Open XML qui l'a remplacé, une archive ZIP de fichiers XML. Les fichiers XLS arrivent encore de systèmes anciens et valent la peine d'être convertis, car certains outils récents les ouvrent avec des avertissements et d'autres les refusent totalement.

uos — Développe CSV Editor et Smart CSV Viewer, deux apps dont tout le travail porte sur ce que les tableurs font mal ici.