Uma frase explica quase tudo: CSV é um arquivo de texto com vírgulas; XLSX é uma pasta compactada de XML que só um programa de planilhas entende. Quase toda diferença prática decorre disso.
A pergunta útil raramente é "qual é melhor". É "para quem vou entregar este arquivo e o que vai sobreviver no caminho".
A resposta rápida
- Entregar dados a um programa (importação, API, script, banco de dados): CSV.
- Entregar um documento a uma pessoa (formatação, fórmulas, várias planilhas): XLSX.
- O arquivo é grande (digamos, mais de 100 MB ou 500.000 linhas): CSV.
- Os valores precisam voltar exatamente como saíram (CEPs, códigos de produto, números de telefone, IDs longos): CSV, e avise disso, porque a planilha que receber o arquivo é quem vai estragar os valores.
O que cada um realmente é
Um CSV tem uma linha por registro, valores separados por vírgulas e aspas em volta de qualquer valor que contenha vírgula. Dá para ler um em um editor de texto. Dá para escrever um com echo. Existe uma especificação, a RFC 4180, e um acordo quase universal de ignorar partes dela, e é por isso que os delimitadores variam de país para país e que CSVs quebrados são um assunto à parte.
Ele guarda valores e mais nada. Sem tipos, sem formatos, sem fórmulas, sem cores, sem segunda planilha. Uma célula com 007 e uma célula com o número sete ficam indistinguíveis depois de gravadas: as duas são só os caracteres entre duas vírgulas, e o que acontece depois depende inteiramente de quem as lê.
Um XLSX é um arquivo ZIP. Renomeie um para .zip, descompacte e você terá um diretório de XML: um arquivo por planilha, uma tabela de strings compartilhadas, uma tabela de estilos, arquivos de relacionamento. Ele guarda tudo o que uma planilha sabe: tipos de célula, formatos numéricos, fórmulas e seus resultados em cache, gráficos, formatação condicional, painéis congelados, macros na variante .xlsm.
Lado a lado
| CSV | XLSX | |
|---|---|---|
| Tipo de arquivo | Texto simples | Arquivo XML compactado |
| Limite de linhas | Nenhum | 1.048.576 por planilha |
| Limite de colunas | Nenhum | 16.384 |
| Várias planilhas | Não | Sim |
| Fórmulas | Não | Sim |
| Formatação, gráficos | Não | Sim |
| Tipos de dados | Nenhum: tudo é texto | Explícito em cada célula |
| Tamanho, 1 M de linhas × 10 colunas | ~150 MB | ~40 MB |
| Abre em um editor de texto | Sim | Não |
| Legível em 20 anos | Quase certamente | Provavelmente |
| Diffs no git | Limpos | Impossíveis |
Duas linhas merecem uma explicação.
Tamanho, e por que a resposta se inverte
O XLSX é compactado, então para os mesmos dados costuma ocupar menos espaço em disco, muitas vezes três ou quatro vezes menos. Isso faz o CSV parecer a escolha errada para dados grandes, e é justamente o contrário.
Num arquivo grande, o que importa não é o tamanho em disco, e sim o que acontece ao abrir. Um XLSX precisa ser descompactado e analisado até virar um modelo de objetos antes de você ver a primeira linha; tudo vai para a memória. Um CSV pode ser lido linha a linha, então uma ferramenta consegue processar em fluxo um arquivo de 5 GB que nunca caberia inteiro na memória. É por isso que toda resposta a "como processar este arquivo com DuckDB" começa com um CSV, e por isso que o limite de linhas acima importa: uma exportação de três milhões de linhas não pode ser um XLSX em uma única planilha, seja qual for o tamanho.
Tipos, e a viagem de ida e volta que come seus dados
Esta é a diferença que de fato dá trabalho às pessoas.
Como o CSV não carrega tipos, a planilha precisa adivinhar na importação. Os palpites são consistentes e consistentemente errados, sempre das mesmas quatro formas:
01234vira1234: o zero à esquerda de um CEP some.4019283746501928vira4.01928E+15: um ID em notação científica, e os últimos dígitos se perdem, não ficam apenas ocultos.3/4/2026vira 4 de março ou 3 de abril, dependendo da configuração regional.MAR1,SEPT2,DEC5viram datas. Por causa disso, pesquisadores de genes renomearam 27 genes humanos em 2020.
Abra um CSV no Excel, salve de volta como CSV e essas mudanças passam a ser permanentes no arquivo. O CSV não perdeu os dados. A planilha em que você o abriu perdeu. E esse é o argumento para ler um CSV com algo que o leia como CSV, e não como um documento de planilha:
Lê o arquivo como CSV em vez de importá-lo: sem conversão de tipos, sem adivinhar datas pela região, e com consultas em SQL ou em linguagem natural sobre os valores exatamente como foram escritos.
O que ele fazEscolhendo, por situação
Use CSV quando:
- Do outro lado há algo automatizado: uma importação para banco de dados, um script, uma API.
- O arquivo é grande ou está crescendo.
- Os dados precisam ir e voltar byte a byte.
- Ele vai para o controle de versão e você quer ver o que mudou.
- Você precisa que seja legível daqui a uma década, sem suposições sobre software.
Use XLSX quando:
- Uma pessoa vai abri-lo e o layout faz parte da mensagem.
- Há fórmulas que precisam continuar ativas.
- Os dados são de fato de várias planilhas.
- Os tipos de célula importam e você não controla o que vai abrir o arquivo. Esse é o argumento honesto a favor do XLSX: tipos que o destinatário não consegue interpretar errado.
- Você precisa de gráficos, filtros ou formatação condicional dentro do próprio arquivo.
Não use nenhum dos dois quando: o conjunto de dados é maior que uma planilha e você vai consultá-lo repetidamente. Isso é trabalho para Parquet ou para um banco de dados. Parquet é colunar, tipado e compactado, e tanto o DuckDB quanto o pandas o leem nativamente.
O que as pessoas entendem errado
"CSV é um formato do Excel." Não é; o Excel apenas o abre, e é por isso que a conversão de tipos acima acontece. O CSV é vinte anos mais antigo que o Excel.
"XLS e XLSX são a mesma coisa." XLS é o formato binário anterior a 2007, que ainda aparece vindo de sistemas antigos. XLSX é o substituto baseado em OOXML. Se receber um .xls, converta. O Excel atual o abre com avisos e algumas ferramentas o recusam de vez.
"XLSX é mais seguro porque é um formato de verdade." O XLSX pode carregar macros, links externos e cargas DDE; o CSV é texto inerte, exceto pela injeção de fórmulas, em que um valor começando com =, +, - ou @ é executado pela planilha que o abre. Os dois exigem cuidado, em direções diferentes.
"Converter não perde nada." De XLSX para CSV somem todas as fórmulas (você fica com o último valor calculado), todas as planilhas além da primeira e toda a formatação. De CSV para XLSX são adicionados tipos que nunca estiveram nos dados, e é aí que os valores são estragados. Converter um CSV em Excel no celular mostra como fazer isso sem danos.
O único hábito que vale a pena
Quando enviar a alguém um CSV com códigos, IDs ou datas, diga isso na mensagem: "abra com uma etapa de importação e defina a coluna de ID como Texto". Duas linhas de e-mail evitam a falha de qualidade de dados mais comum no trabalho de escritório, e nenhuma escolha de formato a evita sozinha.