Converter CSV em tabela de texto alinhada
Cole uma exportação de três linhas com nomes, cargos e cidades e receba uma tabela com cada coluna alinhada, separada por barras verticais e com uma linha tracejada sob o cabeçalho. Aceita aspas, ponto e vírgula e tabulações. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Ela analisa corretamente os campos entre aspas — vírgulas, ponto e vírgula e quebras de linha dentro das aspas —, calcula a largura de cada coluna, preenche cada célula para que as colunas fiquem alinhadas e desenha uma linha separadora sob o cabeçalho. Quando uma linha tem um número de campos diferente do cabeçalho, a chamada falha com um erro claro em vez de produzir uma tabela torta, a menos que você ative a opção lenient para preencher as linhas curtas com células vazias.
Por que converter CSV em uma tabela de largura fixa
CSV é o formato em que os dados viajam, mas é péssimo para ler. Uma coluna com valores longos empurra o campo seguinte para a direita em uma linha e não em outra, e a vista perde o alinhamento logo na segunda linha. As planilhas resolvem isso escondendo o texto por completo, que é exatamente o que você não quer quando o destino é um log de terminal, um comentário de pull request, um e-mail em texto puro ou documentação em Markdown.
Um conversor de csv para tabela de texto mantém os dados como texto — copiável, comparável com diff, pesquisável com grep — enquanto devolve a única coisa que a planilha oferecia: colunas alinhadas. Cole a exportação e receba um bloco em que cada campo ocupa a mesma posição em todas as linhas, com uma régua de hífens sob o cabeçalho.
Por ser texto puro, o resultado sobrevive a qualquer colagem em qualquer ferramenta, chat ou revisão de código sem perder a formatação, e se lê da mesma forma na tela de um celular e em um monitor ultrawide.
Como funcionam a análise e o alinhamento
O analisador segue as convenções do RFC 4180: um campo entre aspas duplas pode conter o delimitador, quebras de linha e aspas literais escritas como duas aspas duplas, e as linhas em branco são ignoradas. Isso importa na prática porque as exportações reais colocam aspas nos campos justamente quando eles contêm algo interessante: um endereço com vírgula, uma nota com ponto e vírgula, uma mensagem com quebra de linha. Depois da análise, o renderizador verifica se cada linha tem o mesmo número de campos da primeira.
Se alguma não tiver, a chamada falha com um erro que indica a linha e as duas contagens: uma linha com uma vírgula final faltando gera uma tabela visivelmente deslocada, e uma tabela deslocada é pior do que tabela nenhuma. Se preferir ver os dados mesmo assim, ative lenient e as linhas curtas serão preenchidas com células vazias até a largura da linha mais longa.
Em seguida, a largura de cada coluna é calculada como a célula mais longa, cada célula é preenchida até essa largura e as colunas são unidas com uma barra vertical. Quando a primeira linha é um cabeçalho, uma régua de hífens é desenhada abaixo dela. Tudo é determinístico: a mesma entrada sempre produz uma saída idêntica, byte a byte.
Delimitadores, cabeçalhos e uso no dia a dia
Nem todo CSV usa vírgula. As exportações europeias costumam usar ponto e vírgula, e muitos dumps de banco de dados usam tabulação ou barra vertical. Passe o caractere no campo delimiter e todo o resto funciona igual: campos entre aspas, detecção de erros e preenchimento leniente.
Se seus dados não têm linha de cabeçalho, defina header como false e a primeira linha será renderizada como dado, sem linha separadora. A capacidade roda na borda sem armazenar nada: o texto é analisado, renderizado e descartado. Os usuários típicos são scripts de release que imprimem uma tabela de resumo nos logs de CI, bots que respondem com uma tabela legível no chat e geradores de documentação que embutem dados de exemplo alinhados.
São aceitas entradas de até 1 MB e 50.000 linhas, o que cobre com folga qualquer exportação que uma pessoa colaria e a maioria das geradas por máquinas.
Casos de uso
Tabelas legíveis em logs de CI
Imprima resumos de build ou migração como tabelas alinhadas em logs de texto puro, em vez de linhas separadas por vírgulas que ninguém lê.
Colar dados em chats e tickets
Formate uma exportação CSV uma vez e cole no Slack, em um ticket ou em um e-mail, onde ela permanece alinhada e legível.
Embutir dados de exemplo na documentação
Renderize conjuntos de dados de exemplo como blocos de largura fixa em READMEs e documentação sem manter o preenchimento à mão.
Perguntas frequentes
Quanto custa?
Também é grátis executar no seu navegador nesta página.
O meu CSV fica armazenado?
Não. O texto é analisado, renderizado e descartado; apenas a tabela é devolvida.
O que acontece quando uma linha tem o número errado de colunas?
Ative lenient para preencher as linhas curtas com células vazias.
Campos entre aspas com vírgulas dentro são suportados?
Sim. O analisador segue o RFC 4180: campos entre aspas podem conter o delimitador, quebras de linha e aspas escapadas escritas como duas aspas duplas.
Posso usar ponto e vírgula ou tabulação em vez de vírgula?
Sim. Passe qualquer caractere único no campo delimiter; o padrão é a vírgula.
E se meus dados não tiverem linha de cabeçalho?
Defina header como false e a primeira linha será renderizada como dado, sem desenhar linha separadora.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
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)Exemplo de requisição
{
"csv": "name,role,city\nAda Lovelace,Engineer,London\nGrace Hopper,Admiral,New York\nAlan Turing,Mathematician,London"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.csv_to_table",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 1 |
max_rows | 50000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A API de CSV para tabela de texto pega um texto CSV bruto e o transforma em uma tabela monoespaçada perfeitamente alinhada, pronta para colar em um terminal, um README, uma mensagem de commit ou um chat.
Delimitadores, cabeçalhos e uso no dia a dia
O mesmo código também roda grátis no seu navegador nesta página, então você pode formatar uma exportação colada sem conta e só paga US$ 0,002 por chamada quando automatizar pela API.
Perguntas técnicas
Qual o tamanho máximo de entrada?
Até 1 MB e 50.000 linhas por requisição, o que cobre qualquer exportação feita para ser lida por uma pessoa.