Convertir CSV a tabla de texto alineada
Pegue una exportación de tres filas con nombres, cargos y ciudades y obtenga una tabla con cada columna alineada, separada por barras verticales y con una línea de guiones bajo el encabezado. Admite comillas, punto y coma y tabuladores. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Analiza correctamente los campos entre comillas —comas, puntos y coma y saltos de línea dentro de las comillas—, calcula el ancho de cada columna, rellena cada celda para que las columnas queden alineadas y dibuja una línea separadora bajo la cabecera. Cuando una fila tiene un número de campos distinto al de la cabecera, la llamada falla con un error claro en lugar de producir una tabla torcida, salvo que active la opción lenient para rellenar las filas cortas con celdas vacías.
Por qué convertir un CSV en una tabla de ancho fijo
El CSV es el formato en el que viajan los datos, pero es un formato pésimo para leer. Una columna con valores largos empuja el campo siguiente muy a la derecha en una fila y no en otra, de modo que la vista pierde la alineación a las dos líneas. Las hojas de cálculo lo resuelven ocultando el texto por completo, que es justo lo que no quiere cuando el destino es un registro de terminal, un comentario de pull request, un correo en texto plano o documentación en Markdown.
Un conversor de csv a tabla de texto mantiene los datos como texto —copiable, comparable con diff, localizable con grep— mientras recupera lo único que aportaba la hoja de cálculo: columnas alineadas. Pegue la exportación y obtenga un bloque donde cada campo ocupa la misma posición en todas las filas, con una regla de guiones bajo la cabecera.
Al ser texto plano, el resultado sobrevive a cualquier pegado en cualquier herramienta, chat o revisión de código sin perder el formato, y se lee igual en la pantalla de un móvil que en un monitor panorámico.
Cómo funcionan el análisis y la alineación
El analizador sigue las convenciones del RFC 4180: un campo entre comillas dobles puede contener el delimitador, saltos de línea y comillas literales escritas como dos comillas dobles, y las líneas en blanco se ignoran. Esto importa en la práctica porque las exportaciones reales entrecomillan los campos justo cuando contienen algo interesante: una dirección con una coma, una nota con un punto y coma, un mensaje con un salto de línea. Tras el análisis, el renderizador comprueba que cada fila tenga el mismo número de campos que la primera.
Si alguna no lo tiene, la llamada falla con un error que indica la fila y ambos recuentos: una fila a la que le falta una coma final produce una tabla visiblemente desplazada, y una tabla desplazada es peor que ninguna tabla. Si prefiere ver los datos de todos modos, active lenient y las filas cortas se rellenan con celdas vacías hasta la fila más ancha.
A continuación se calcula el ancho de cada columna como la celda más larga, cada celda se rellena hasta ese ancho y las columnas se unen con una barra vertical. Cuando la primera fila es una cabecera, se dibuja una regla de guiones debajo. Todo es determinista: la misma entrada produce siempre una salida idéntica byte a byte.
Delimitadores, cabeceras y uso cotidiano
No todo CSV usa comas. Las exportaciones europeas suelen usar puntos y coma, y muchos volcados de bases de datos usan tabulaciones o barras verticales. Pase el carácter en el campo delimiter y todo lo demás funciona igual: campos entre comillas, detección de errores y relleno leniente.
Si sus datos no tienen fila de cabecera, ponga header en false y la primera fila se renderiza como datos, sin línea separadora. La capacidad se ejecuta en el borde sin guardar nada: el texto se analiza, se renderiza y se descarta. Quienes la usan suelen ser scripts de publicación que imprimen una tabla resumen en los registros de CI, bots que responden con una tabla legible en el chat y generadores de documentación que incrustan datos de ejemplo alineados.
Se aceptan entradas de hasta 1 MB y 50.000 filas, lo que cubre con holgura cualquier exportación que una persona pegaría y la mayoría de las generadas por máquinas.
Qué puede hacer con ella
Tablas legibles en registros de CI
Imprima resúmenes de compilación o migración como tablas alineadas en registros de texto plano, en lugar de líneas separadas por comas que nadie lee.
Pegar datos en chats e incidencias
Dé formato a una exportación CSV una vez y péguela en Slack, en una incidencia o en un correo donde se mantiene alineada y legible.
Incrustar datos de ejemplo en documentación
Renderice conjuntos de datos de ejemplo como bloques de ancho fijo en READMEs y documentación sin mantener el relleno a mano.
Preguntas frecuentes
¿Cuánto cuesta?
También es gratis ejecutarlo en su navegador en esta página.
¿Se guarda mi CSV?
No. El texto se analiza, se renderiza y se descarta; solo se devuelve la tabla.
¿Qué ocurre cuando una fila tiene un número incorrecto de columnas?
Active lenient para rellenar las filas cortas con celdas vacías.
¿Se admiten campos entre comillas con comas dentro?
Sí. El analizador sigue el RFC 4180: los campos entrecomillados pueden contener el delimitador, saltos de línea y comillas escapadas escritas como dos comillas dobles.
¿Puedo usar punto y coma o tabulación en lugar de coma?
Sí. Pase cualquier carácter único en el campo delimiter; por defecto es una coma.
¿Y si mis datos no tienen fila de cabecera?
Ponga header en false y la primera fila se renderiza como datos, sin dibujar línea separadora.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.csv_to_table",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 1 |
max_rows | 50000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La API de CSV a tabla de texto toma texto CSV en bruto y lo convierte en una tabla monoespaciada perfectamente alineada que puede pegar en una terminal, un README, un mensaje de commit o un chat.
Delimitadores, cabeceras y uso cotidiano
El mismo código también se ejecuta gratis en su navegador en esta página, de modo que puede dar formato a una exportación pegada sin cuenta y solo pagar $0.002 por llamada cuando lo automatice mediante la API.
Preguntas técnicas
¿Qué tamaño de entrada admite?
Hasta 1 MB y 50.000 filas por solicitud, lo que cubre cualquier exportación pensada para ser leída por una persona.