XLSX vs CSV : ce qui change
Avant de convertir, comprenez ce que le format CSV conserve et ce qu’il abandonne :
| Fonctionnalité | XLSX | CSV |
|---|---|---|
| Valeurs des cellules (texte, nombres) | Oui | Oui |
| Formules | Oui (stockées) | Non (valeurs calculées uniquement) |
| Mise en forme (gras, couleurs) | Oui | Non |
| Feuilles multiples | Oui | Non (une feuille par fichier) |
| Graphiques et images | Oui | Non |
| Types de données (dates, devises) | Oui (cellules typées) | Texte brut uniquement |
| Taille du fichier (1 000 lignes) | ~50–200 Ko | ~10–50 Ko |
| Compatibilité universelle | Nécessite Excel/lecteur | Tout éditeur de texte |
Si vous avez uniquement besoin des données brutes — pour importer dans une base de données, analyser des données ou partager entre plateformes — le format CSV est le bon choix. Si vous devez conserver la mise en forme, les formules ou plusieurs feuilles, gardez le format XLSX.
Méthode 1 : convertisseur en ligne (CleverUtils)
La méthode la plus rapide. Aucun logiciel à installer, fonctionne sur tout appareil équipé d’un navigateur.
- Accédez à cleverutils.com/xlsx-to-csv
- Cliquez sur Choisir un fichier XLSX ou faites glisser-déposer votre feuille de calcul
- Cliquez sur Convertir
- Téléchargez le fichier CSV obtenu
Idéal pour : les conversions ponctuelles rapides. Aucune installation nécessaire. Les fichiers sont chiffrés lors de l’envoi et supprimés automatiquement sous 2 heures.
Méthode 2 : Microsoft Excel
Si vous avez déjà Excel installé, vous pouvez exporter directement :
- Ouvrez le fichier
.xlsxdans Excel - Si le classeur contient plusieurs feuilles, cliquez sur l’onglet de la feuille à exporter
- Allez dans Fichier → Enregistrer sous (ou Fichier → Enregistrer une copie dans les versions récentes)
- Dans le menu déroulant « Type de fichier », sélectionnez CSV (séparateur : point-virgule) (*.csv)
- Choisissez l’emplacement de sauvegarde et cliquez sur Enregistrer
- Excel avertira que certaines fonctionnalités ne sont pas compatibles avec CSV — cliquez sur Oui pour continuer
Excel propose plusieurs variantes CSV dans la boîte de dialogue Enregistrer sous :
| Option | Encodage | Délimiteur | Idéal pour |
|---|---|---|---|
| CSV (séparateur : point-virgule) | Par défaut du système (souvent Windows-1252) | Point-virgule | Données en français/Europe |
| CSV UTF-8 (séparateur : virgule) | UTF-8 avec BOM | Virgule | Caractères internationaux |
| CSV (Macintosh) | Mac Roman | Virgule | Applications macOS legacy |
| CSV (MS-DOS) | Page de codes OEM/DOS | Virgule | Programmes DOS legacy |
Conseil : Choisissez toujours CSV UTF-8 si vos données contiennent des caractères accentués, du texte CJK ou tout symbole non-ASCII. Le simple « CSV (séparateur : point-virgule) » utilise un encodage dépendant de la locale qui peut corrompre les caractères spéciaux sur d’autres systèmes.
Méthode 3 : Google Sheets
Gratuit et disponible sur toute plateforme équipée d’un navigateur :
- Ouvrez sheets.google.com et importez votre fichier XLSX (Fichier → Ouvrir → Importer)
- Google Sheets importe le classeur en conservant la plupart de la mise en forme visuelle
- Sélectionnez l’onglet de la feuille à exporter
- Allez dans Fichier → Télécharger → Valeurs séparées par des virgules (.csv)
- La feuille active est téléchargée sous forme de fichier
.csv
Google Sheets exporte toujours le CSV en encodage UTF-8, ce qui est le choix le plus sûr pour les données internationales. Le délimiteur est toujours une virgule, quels que soient vos paramètres de locale.
Méthode 4 : LibreOffice Calc
LibreOffice est gratuit, open source et disponible sur Windows, macOS et Linux. Il vous offre le plus grand contrôle sur les paramètres d’export CSV.
- Ouvrez le fichier
.xlsxdans LibreOffice Calc - Allez dans Fichier → Enregistrer sous
- Sélectionnez Texte CSV (.csv) comme format
- Cliquez sur Utiliser le format Texte CSV lorsqu’on vous le demande
- Dans la boîte de dialogue d’export, configurez :
- Jeu de caractères : Unicode (UTF-8)
- Délimiteur de champ : virgule
,(ou point-virgule, tabulation) - Délimiteur de texte : guillemet double
"
- Cliquez sur OK
Conversion en lot via la ligne de commande
LibreOffice prend en charge le mode sans interface graphique (headless), ce qui le rend idéal pour le traitement en lot :
# Convertir un seul fichier
libreoffice --headless --convert-to csv report.xlsx
# Convertir tous les fichiers XLSX du répertoire courant
libreoffice --headless --convert-to csv *.xlsx
# Spécifier le répertoire de sortie
libreoffice --headless --convert-to csv --outdir ./csv-output/ *.xlsx
Remarque : Le mode headless de LibreOffice exporte uniquement la première feuille. Pour les classeurs multi-feuilles, utilisez un script Python (méthode 5) ou convertissez chaque feuille manuellement.
Méthode 5 : Python (pandas)
Python avec la bibliothèque pandas est la meilleure option pour les conversions automatisées, reproductibles ou en lot. Il gère nativement les classeurs multi-feuilles, l’encodage et les délimiteurs personnalisés.
Conversion basique
import pandas as pd
# Lire la première feuille et enregistrer en CSV
df = pd.read_excel("report.xlsx")
df.to_csv("report.csv", index=False, encoding="utf-8-sig")
Convertir toutes les feuilles en fichiers CSV séparés
import pandas as pd
xlsx = pd.ExcelFile("workbook.xlsx")
for sheet_name in xlsx.sheet_names:
df = pd.read_excel(xlsx, sheet_name=sheet_name)
filename = f"{sheet_name}.csv"
df.to_csv(filename, index=False, encoding="utf-8-sig")
print(f"Enregistré {filename}")
Conversion en lot de plusieurs fichiers XLSX
import pandas as pd
from pathlib import Path
for xlsx_file in Path(".").glob("*.xlsx"):
df = pd.read_excel(xlsx_file)
csv_file = xlsx_file.with_suffix(".csv")
df.to_csv(csv_file, index=False, encoding="utf-8-sig")
print(f"{xlsx_file} → {csv_file}")
Installation : pip install pandas openpyxl — le moteur openpyxl est requis pour lire les fichiers .xlsx. Il est utilisé automatiquement par pandas lorsqu’il est installé.
Méthode 6 : outils en ligne de commande
Pour les environnements serveur, les pipelines CI/CD ou les workflows scriptés où vous ne pouvez pas ouvrir d’interface graphique.
ssconvert (Gnumeric)
Un convertisseur de tableur léger en ligne de commande inclus avec Gnumeric :
# Installer sur Ubuntu/Debian
sudo apt install gnumeric
# Convertir un seul fichier
ssconvert report.xlsx report.csv
# Exporter toutes les feuilles (crée report.csv.0, report.csv.1, etc.)
ssconvert -S report.xlsx report.csv
# Conversion en lot de tous les fichiers XLSX
for f in *.xlsx; do ssconvert "$f" "${f%.xlsx}.csv"; done
csvkit (in2csv)
Une boîte à outils Python spécialement conçue pour les opérations CSV :
# Installer
pip install csvkit
# Convertir (première feuille par défaut)
in2csv report.xlsx > report.csv
# Spécifier une feuille par son nom
in2csv --sheet "Sales Q4" report.xlsx > sales-q4.csv
# Lister tous les noms de feuilles
in2csv --names report.xlsx
Problèmes courants et comment les résoudre
Problèmes d’encodage (caractères illisibles)
Le problème le plus fréquent. Les caractères accentués (é, ü, ñ), le texte CJK ou des symboles comme € apparaissent sous forme de é, ??? ou autre texte corrompu.
Cause principale : le fichier CSV a été enregistré dans un encodage mais ouvert dans un autre. Excel sous Windows utilise par défaut la page de codes locale (ex. Windows-1252 pour l’Europe occidentale), et non UTF-8.
Solution :
- Enregistrez toujours en UTF-8 avec BOM (indicateur d’ordre des octets). Le BOM signale à Excel et aux autres applications que le fichier est en UTF-8.
- En Python : utilisez
encoding="utf-8-sig"(UTF-8 avec BOM) plutôt queencoding="utf-8" - Pour ouvrir un CSV dans Excel : utilisez l’assistant Données → À partir du texte/CSV, qui vous permet de sélectionner l’encodage avant l’importation
Incohérences de délimiteurs
Certaines locales européennes utilisent le point-virgule (;) plutôt que la virgule comme délimiteur CSV, car la virgule sert de séparateur décimal dans ces locales (ex. 1 234,56 en français).
Symptômes : toutes les données apparaissent dans une seule colonne à l’ouverture dans Excel, ou les valeurs numériques sont réparties sur plusieurs colonnes.
Solution :
- Vérifiez votre locale système : les utilisateurs sous locales française, allemande ou italienne peuvent avoir besoin de points-virgules
- En Python :
df.to_csv("file.csv", sep=";")pour une sortie délimitée par des points-virgules - Dans LibreOffice : définissez explicitement le délimiteur de champ lors de l’export
- Lors de l’importation : utilisez l’assistant d’importation de texte et spécifiez le délimiteur correct
Classeurs multi-feuilles
Le format CSV ne prend en charge qu’une seule feuille par fichier. Lors de la conversion d’un classeur XLSX multi-feuilles, la plupart des outils exportent uniquement la première feuille (active).
Solution :
- Exportez chaque feuille séparément en utilisant le script Python multi-feuilles ci-dessus
- Utilisez
ssconvert -Squi crée automatiquement des fichiers CSV numérotés pour chaque feuille - Dans Excel ou Google Sheets, changez manuellement d’onglet et exportez chacune
Formatage des dates et des nombres
Les dates et les nombres peuvent changer lors de la conversion en CSV car ce format n’a pas de notion de types de données. Une date comme 2026-03-24 peut devenir 46108 (numéro de série Excel) ou 24/03/2026 (format dépendant de la locale).
Solution :
- Formatez les colonnes de dates en texte dans le format souhaité avant l’export (ex.
YYYY-MM-DDpour l’ISO 8601) - En Python :
df.to_csv(..., date_format="%Y-%m-%d") - Pour les nombres, supprimez les séparateurs de milliers et assurez un format décimal cohérent
Quelle méthode choisir ?
| Méthode | Vitesse | Multi-feuilles | Contrôle encodage | En lot | Idéal pour |
|---|---|---|---|---|---|
| CleverUtils | Instantané | Première feuille | Auto (UTF-8) | Non | Conversions ponctuelles rapides |
| Excel | Rapide | Manuelle par feuille | 4 options | Non | Utilisateurs avec Excel installé |
| Google Sheets | Moyen | Manuelle par feuille | UTF-8 uniquement | Non | Chromebook / sans app bureautique |
| LibreOffice | Rapide | Première feuille (CLI) | Contrôle total | Oui (CLI) | Utilisateurs Linux, lot via CLI |
| Python | Rapide | Toutes les feuilles | Contrôle total | Oui | Développeurs, automatisation |
| CLI (ssconvert) | Rapide | Toutes (-S) | UTF-8 par défaut | Oui | Serveurs, pipelines CI/CD |