CSV, Excel ou JSON: qual formato para seus dados?
Salvamos a mesma tabela de 100 mil linhas em CSV, em uma pasta de trabalho do Excel e em JSON, e comparamos os tamanhos, a velocidade de leitura no código e o que dá errado com datas, zeros à esquerda e números longos.
Tabelas de dados circulam entre pessoas e programas em três formatos principais: CSV, pastas de trabalho do Excel (XLSX) e JSON. Cada um é a escolha natural em algum lugar, e cada um causa um tipo conhecido de problema quando vai parar no lugar errado. Para comparar em pé de igualdade, salvamos uma mesma tabela nos três, medimos tamanho e velocidade de leitura e vimos o que cada formato consegue ou não guardar.
A tabela de teste
A tabela tem 100 mil pedidos com sete colunas: um número de pedido, uma data, um país, um produto, uma quantidade, um preço unitário e um total. As primeiras linhas ficam assim em CSV:
order_id,date,country,product,quantity,unit_price,total
100000,2025-11-30,Brazil,Water bottle,6,158.35,950.1
100001,2025-02-25,France,Office chair,7,158.73,1111.11e assim em JSON:
[
{
"order_id": 100000,
"date": "2025-11-30",
"country": "Brazil",
"product": "Water bottle",
"quantity": 6,
"unit_price": 158.35,
"total": 950.1
},
...
]Tamanho do arquivo
Tamanhos em megabytes (MiB). O JSON repete o nome de cada coluna em cada linha, por isso tem duas vezes e meia o tamanho do CSV.
Um arquivo do Excel é um arquivo ZIP de documentos XML, então já chega comprimido, e o Excel guarda cada texto diferente uma única vez numa lista compartilhada. Isso o deixa um pouco menor que o CSV aqui. O JSON é de longe o maior: cada linha repete "order_id", "date" e as outras chaves, e a indentação acrescenta mais de um terço por cima.
O quadro muda quando os arquivos são compactados, como acontece no trânsito quando um servidor web os envia com gzip:
| Formato | Tamanho | Com gzip |
|---|---|---|
| CSV | 5,03 MB | 1,36 MB |
| JSON, compacto | 12,37 MB | 1,63 MB |
| JSON, indentado | 16,95 MB | 1,72 MB |
| XLSX, salvo pelo Excel | 4,46 MB | já comprimido |
Velocidade de leitura
O tamanho importa menos do que se pensa numa conexão moderna. A rapidez com que um programa transforma o arquivo de volta em linhas importa mais quando os dados são grandes. Lemos cada arquivo de volta com as bibliotecas que nossas ferramentas de dados usam, pegando a mediana de cinco execuções:
| Formato | Leitura em linhas | Biblioteca |
|---|---|---|
| JSON, compacto | 0,12 s | JSON.parse, embutido no JavaScript |
| CSV | 0,47 s | Papa Parse |
| XLSX | 10,2 s | SheetJS |
O JSON vence no código porque toda linguagem traz um parser nativo rápido e os tipos já vêm de graça. O CSV precisa de um parser que trate aspas e converta texto em números. Fora do Excel, o XLSX é de longe o mais lento: o programa precisa descompactar o arquivo, ler um documento XML grande e resolver os textos compartilhados e os estilos. Se um script ou um app web precisa ler tabelas grandes com frequência, o XLSX é o formato errado para alimentá-lo.
O que cada formato consegue guardar
| CSV | XLSX | JSON | |
|---|---|---|---|
| Tipos de dados | Só texto | Números, texto, datas, booleanos | Números, texto, booleanos, null |
| Várias tabelas | Não, uma por arquivo | Sim, como planilhas | Sim, como objetos aninhados |
| Dados aninhados | Não | Não | Sim |
| Fórmulas e formatação | Não | Sim | Não |
| Limite de linhas | Nenhum | 1.048.576 linhas | Nenhum |
| Legível num editor de texto | Sim | Não | Sim |
| Abre no Excel | Sim, com cuidado | Sim | Com Power Query ou um conversor |
Onde o CSV dá errado
O CSV parece o formato mais simples, e é justamente a falta de regras que causa mais problemas. Os mesmos problemas aparecem de novo e de novo:
- Os zeros à esquerda somem. CEPs, códigos de produto e números de telefone como
02134viram2134quando uma planilha supõe que são números. - Números longos perdem dígitos. O Excel guarda 15 dígitos significativos, então um número de cartão ou de conta de 16 dígitos muda o último dígito sem avisar.
- As datas são reinterpretadas.
03/04/2025é 3 de abril na maior parte do mundo e 4 de março nos Estados Unidos, e as planilhas convertem esses valores ao abrir o arquivo. Datas ISO como2025-04-03evitam o chute. - O separador depende do país. Onde a vírgula é o separador decimal, como no Brasil, em Portugal ou na Alemanha, o Excel espera ponto e vírgula entre os campos, então um arquivo separado por vírgulas abre como uma única coluna comprida.
- Acentos viram símbolos. O Excel só lê corretamente um CSV em UTF-8 se o arquivo começa com uma marca de ordem de bytes (BOM). Sem ela, «Café» pode aparecer como «Café».
- Vírgulas dentro dos valores precisam ficar entre aspas, e aspas dentro de um valor entre aspas, duplicadas. CSV feito à mão costuma errar nisso.
Nada disso acontece com XLSX ou JSON, que guardam os tipos explicitamente. Com CSV, o hábito mais seguro é abrir pela tela de importação do Excel (Dados, De Texto/CSV), onde você define o tipo de cada coluna, em vez de dar dois cliques no arquivo.
Qual usar
- Enviar uma tabela para uma pessoa que vai olhar, ordenar ou acrescentar fórmulas: XLSX. Mantém os tipos e a formatação e abre corretamente em qualquer lugar com Excel, Google Sheets, Numbers ou LibreOffice.
- Trocar dados entre sistemas, importar num banco de dados ou arquivar dados puros: CSV, com codificação UTF-8, datas ISO e uma linha de cabeçalho. É universal, compacto e legível daqui a décadas.
- Dados para um app web ou uma API, ou qualquer coisa com estrutura aninhada: JSON. É o formato nativo do JavaScript e o mais rápido de ler no código.
Converter entre eles costuma ser a parte fácil. Nosso conversor de Excel e CSV transforma XLSX, XLS e ODS em CSV ou JSON planilha por planilha e cria arquivos do Excel a partir de CSV, TSV ou JSON, o visualizador de CSV abre arquivos CSV grandes com ordenação e filtros, e o conversor de dados passa entre JSON, CSV, YAML e XML. Todos rodam no navegador, então os dados nunca saem do seu aparelho.
Perguntas e respostas
CSV ou Excel, qual é menor?
No nosso teste, um arquivo do Excel salvo pelo Excel ficou um pouco menor (4,5 MB) que os mesmos dados em CSV (5,0 MB), porque o XLSX é comprimido por dentro. Compactado, o CSV ficaria bem menor (cerca de 1,4 MB com gzip).
Por que o Excel tira os zeros do começo dos meus números?
O Excel supõe que a coluna tem números ao abrir um arquivo CSV. Importe o arquivo por Dados, De Texto/CSV e defina essa coluna como Texto, ou guarde os dados em XLSX.
Dá para abrir JSON no Excel?
Sim, com o Power Query (Dados, Obter Dados, De Arquivo, Do JSON), ou convertendo antes para CSV ou XLSX. Listas planas de objetos convertem bem; dados aninhados precisam ser achatados em colunas.
Quantas linhas o Excel consegue abrir?
Uma planilha do Excel comporta no máximo 1.048.576 linhas e 16.384 colunas. CSV maiores abrem só em parte, então use um visualizador que leia o arquivo aos poucos ou divida-o.
Ferramentas deste artigo
Mais do blog
ZIP, 7z ou RAR: qual formato de arquivo compactado é melhor?
Compactamos as mesmas pastas de fotos, vídeos, documentos e dados em ZIP, 7z e RAR e medimos tamanho e velocidade. O vencedor depende quase totalmente do que está dentro.
Correção de erros e tamanho do QR code: L, M, Q e H testados
Uma correção de erros maior deixa um QR code resistir a danos, mas também o deixa mais denso. Geramos códigos para quatro tipos comuns de conteúdo em cada nível e os cobrimos aos poucos até pararem de ser lidos.
Timestamps Unix explicados
Um timestamp Unix é só uma contagem de segundos, mas causa um fluxo constante de bugs. O que ele conta, como distinguir segundos de milissegundos num relance, o que acontece com fusos horários e segundos bissextos, e por que 2038 importa.