Convertir un CSV en tableau texte aligné
Collez un export de trois lignes avec noms, fonctions et villes et obtenez un tableau aux colonnes alignées, séparées par des barres verticales, avec une ligne de tirets sous l'en-tête. Guillemets, points-virgules et tabulations sont gérés. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Elle analyse correctement les champs entre guillemets — virgules, points-virgules et sauts de ligne à l'intérieur des guillemets —, calcule la largeur de chaque colonne, remplit chaque cellule pour que les colonnes s'alignent et trace une ligne de séparation sous l'en-tête. Lorsqu'une ligne comporte un nombre de champs différent de l'en-tête, l'appel échoue avec une erreur claire au lieu de produire un tableau bancal, sauf si vous activez l'option lenient pour compléter les lignes courtes avec des cellules vides.
Pourquoi convertir un CSV en tableau à largeur fixe
Le CSV est le format dans lequel voyagent les données, mais c'est un format exécrable à lire. Une colonne aux valeurs longues pousse le champ suivant loin vers la droite sur une ligne et pas sur une autre, et l'œil perd l'alignement dès la deuxième ligne. Les tableurs résolvent le problème en masquant complètement le texte, ce qui est exactement ce que vous ne voulez pas lorsque la destination est un journal de terminal, un commentaire de pull request, un e-mail en texte brut ou de la documentation en Markdown.
Un convertisseur de csv en tableau texte conserve les données sous forme de texte — copiable, comparable avec diff, cherchable avec grep — tout en redonnant la seule chose qu'offrait le tableur : des colonnes alignées. Collez l'export et obtenez un bloc où chaque champ occupe la même position sur toutes les lignes, avec une règle de tirets sous l'en-tête.
Comme il s'agit de texte brut, le résultat survit à tout collage dans n'importe quel outil, chat ou revue de code sans perdre sa mise en forme, et se lit aussi bien sur l'écran d'un téléphone que sur un moniteur large.
Comment fonctionnent l'analyse et l'alignement
L'analyseur suit les conventions du RFC 4180 : un champ entre guillemets doubles peut contenir le délimiteur, des sauts de ligne et des guillemets littéraux écrits comme deux guillemets doubles, et les lignes vides sont ignorées. Cela compte en pratique parce que les exports réels mettent entre guillemets les champs précisément quand ils contiennent quelque chose d'intéressant : une adresse avec une virgule, une note avec un point-virgule, un message avec un saut de ligne.
Après l'analyse, le moteur vérifie que chaque ligne comporte le même nombre de champs que la première. Si ce n'est pas le cas, l'appel échoue avec une erreur qui nomme la ligne et les deux comptages : une ligne à laquelle il manque une virgule finale produit un tableau visiblement décalé, et un tableau décalé est pire qu'aucun tableau. Si vous préférez tout de même voir les données, activez lenient et les lignes courtes seront complétées par des cellules vides jusqu'à la largeur de la ligne la plus longue.
La largeur de chaque colonne est ensuite calculée comme la cellule la plus longue, chaque cellule est remplie jusqu'à cette largeur et les colonnes sont jointes par une barre verticale. Lorsque la première ligne est un en-tête, une règle de tirets est tracée en dessous. Tout est déterministe : la même entrée produit toujours une sortie identique, octet pour octet.
Délimiteurs, en-têtes et usage quotidien
Tous les CSV n'utilisent pas la virgule. Les exports européens utilisent souvent le point-virgule, et de nombreux dumps de bases de données utilisent la tabulation ou la barre verticale. Passez le caractère dans le champ delimiter et tout le reste fonctionne de la même façon : champs entre guillemets, détection des erreurs et remplissage tolérant.
Si vos données n'ont pas de ligne d'en-tête, définissez header sur false et la première ligne sera rendue comme une donnée, sans ligne de séparation. La capacité s'exécute en périphérie sans rien stocker : le texte est analysé, rendu puis supprimé. Les utilisateurs typiques sont des scripts de publication qui impriment un tableau récapitulatif dans les journaux de CI, des bots qui répondent avec un tableau lisible dans le chat et des générateurs de documentation qui intègrent des données d'exemple alignées.
Les entrées jusqu'à 1 Mo et 50 000 lignes sont acceptées, ce qui couvre largement tout export qu'un humain collerait et la plupart de ceux générés par des machines.
Cas d’usage
Des tableaux lisibles dans les journaux de CI
Imprimez les résumés de build ou de migration sous forme de tableaux alignés dans des journaux en texte brut, au lieu de lignes séparées par des virgules que personne ne lit.
Coller des données dans les chats et les tickets
Mettez en forme un export CSV une fois et collez-le dans Slack, un ticket ou un e-mail, où il reste aligné et lisible.
Intégrer des données d'exemple dans la documentation
Rendez des jeux de données d'exemple sous forme de blocs à largeur fixe dans les README et la documentation sans maintenir le remplissage à la main.
Questions fréquentes
Combien cela coûte-t-il ?
L'exécution est également gratuite dans votre navigateur sur cette page.
Mon CSV est-il stocké ?
Non. Le texte est analysé, rendu puis supprimé ; seul le tableau est renvoyé.
Que se passe-t-il lorsqu'une ligne a un nombre de colonnes incorrect ?
Activez lenient pour compléter les lignes courtes avec des cellules vides.
Les champs entre guillemets contenant des virgules sont-ils pris en charge ?
Oui. L'analyseur suit le RFC 4180 : les champs entre guillemets peuvent contenir le délimiteur, des sauts de ligne et des guillemets échappés écrits comme deux guillemets doubles.
Puis-je utiliser un point-virgule ou une tabulation au lieu d'une virgule ?
Oui. Passez n'importe quel caractère unique dans le champ delimiter ; la valeur par défaut est la virgule.
Et si mes données n'ont pas de ligne d'en-tête ?
Définissez header sur false et la première ligne sera rendue comme une donnée, sans tracer de ligne de séparation.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/text/csv-to-table \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"csv":"name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"}'const res = await fetch("https://api.kit.forhosting.com/text/csv-to-table", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/csv-to-table",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/csv-to-table", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"csv":"name,role,city\\nAda Lovelace,Engineer,London\\nGrace Hopper,Admiral,New York\\nAlan Turing,Mathematician,London"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"csv":"name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/csv-to-table", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.csv_to_table",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 1 |
max_rows | 50000 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
L'API de conversion CSV en tableau texte prend un texte CSV brut et le transforme en un tableau monospace parfaitement aligné, prêt à être collé dans un terminal, un README, un message de commit ou un chat.
Délimiteurs, en-têtes et usage quotidien
Le même code s'exécute aussi gratuitement dans votre navigateur sur cette page : vous pouvez donc mettre en forme un export collé sans compte et ne payer que $0.002 par appel lorsque vous l'automatisez via l'API.
Questions techniques
Quelle taille d'entrée est acceptée ?
Jusqu'à 1 Mo et 50 000 lignes par requête, ce qui couvre tout export destiné à être lu par un humain.