mygems

Como impedir que o Excel altere os dados do seu CSV

O Excel remove zeros à esquerda, vira IDs em 1,23E+15 e códigos em datas ao abrir um CSV. Veja como importar sem mudar nada.

Por mygems ·

Você dá dois cliques em um CSV e o Excel "ajuda". O CEP 01234 vira 1234. O número do pedido 4012888888881881 vira 4,01289E+15, e o último dígito é trocado por zero. O código de produto 3-5 vira 3 de maio. Nada disso está no arquivo. O Excel fez isso ao abrir, e, se você salvar, fica permanente.

A solução não é abrir o arquivo de um jeito diferente a cada vez e torcer. É impedir o Excel de adivinhar, e isso leva cerca de um minuto.

A resposta rápida

  • Não dê dois cliques no CSV. Use Dados → De Texto/CSV e defina as colunas frágeis como Texto antes de carregar.
  • No Microsoft 365, desative as conversões indesejadas em Arquivo → Opções → Dados → Conversão automática de dados.
  • Nunca salve por cima do original depois de abri-lo com dois cliques. O estrago é gravado no arquivo naquele momento.
  • Google Planilhas: Arquivo → Importar, e desmarque Converter texto em números, datas e fórmulas.

O que o Excel muda, e por quê

Um CSV não tem tipos: todo valor é texto. O Excel quer números e datas, então adivinha, coluna por coluna, célula por célula. Os palpites que causam problema:

Você tinhaO Excel mostraO que aconteceu
012341234Zero à esquerda removido de um "número"
40128888888818814,01289E+15Notação científica; os dígitos depois do 15º viram 0
3-5, 1/25-mar, 2-janLido como data
MARCH1, SEPT21-Mar, 2-SepLido como data (um problema famoso com nomes de genes)
1E5100000Lido como notação científica
=1+12Lido como fórmula
TRUETRUE (como booleano)Em geral inofensivo, até virar um nome

Dois desses casos são destrutivos, e não apenas estéticos. A notação científica em um número de 16 dígitos descarta o último dígito, porque o Excel guarda números com 15 algarismos significativos. E um valor lido como data é guardado como número de série de data. Se você voltar o formato para texto, vai ver um número de série como 46086, não 3-5.

O momento que importa é o Salvar. Abrir um CSV muda o que você vê. Salvar como CSV grava de volta no arquivo o que você vê, e os valores originais se perdem.

Solução 1: importar em vez de abrir

Isso funciona em todas as versões desktop do Excel desde 2016.

  1. Abra uma pasta de trabalho em branco.
  2. Dados → De Texto/CSV e escolha o arquivo.
  3. Na visualização, clique em Transformar Dados (não em Carregar).
  4. No Power Query, selecione cada coluna frágil: IDs, CEPs, telefones, códigos de produto, números de conta. Depois Transformar → Tipo de Dados → Texto. Se ele perguntar, escolha Substituir atual.
  5. Fechar e Carregar.

Os valores chegam exatamente como estão escritos. Você ainda pode fazer contas com as colunas realmente numéricas, porque só desligou o palpite onde ele causava problema.

Se preferir o assistente antigo: Arquivo → Opções → Dados → Mostrar assistentes de importação de dados herdados → De Texto (Herdado). Ele passa a aparecer em Dados → Obter Dados → Assistentes Herdados, e a etapa 3 do assistente permite marcar colunas como Texto.

Solução 2: desativar a conversão automática

As versões recentes do Excel para Microsoft 365 têm configurações exatamente para isso, em Arquivo → Opções → Dados → Conversão automática de dados:

  • Remover os zeros à esquerda e converter em um número
  • Manter os primeiros 15 dígitos de números longos e exibir em notação científica
  • Converter dígitos ao redor da letra "E" em um número em notação científica
  • Converter letras e números contínuos em uma data

Desmarque as que atrapalham. Há também uma opção para ser avisado quando o Excel converte algo ao abrir um CSV, e vale deixá-la ligada: ela transforma uma mudança silenciosa em uma visível.

Essas configurações valem também para a abertura com dois cliques, o que as torna a solução mais conveniente. Também são as menos portáteis: a pessoa para quem você envia o arquivo tem as próprias configurações.

Solução 3: Google Planilhas e Numbers

O Google Planilhas também converte por padrão. Use Arquivo → Importar → Fazer upload e, na caixa de importação, desmarque Converter texto em números, datas e fórmulas. Tudo chega como texto, exatamente como está escrito.

O Numbers no Mac e no iPhone também remove zeros à esquerda e lê valores parecidos com datas como datas. Selecione a coluna e defina o formato como Texto para evitar isso em novas entradas, mas a conversão ao abrir já aconteceu. Se os dados importam, confira alguns valores conhecidos com o arquivo original.

Soluções que parecem espertas e não são

  • Escrever os valores como ="01234" no CSV. O Excel mostra 01234. Qualquer outra ferramenta que ler o arquivo vê uma fórmula, e o próximo sistema que receber sua exportação também.
  • Colocar um apóstrofo, '01234. Mesmo problema: o apóstrofo passa a fazer parte dos seus dados em todo lugar, menos no Excel.
  • Formatar a coluna como Texto depois de abrir. Tarde demais. O zero já se foi; a formatação não o traz de volta.

No celular

Os celulares têm o mesmo problema, com menos configurações. O Numbers no iPhone e os apps Planilhas e Excel convertem ao abrir, e um CSV salvo de novo por eles carrega as alterações.

Um app de CSV que trata toda célula como texto não tem esse problema, porque nunca converte. No Smart CSV Viewer você ainda pode dizer que uma coluna contém números, moeda ou datas, para que ela seja ordenada e filtrada corretamente, mas o tipo só muda como a coluna é exibida. O texto no arquivo continua como estava.

A planilha Tipo de coluna para uma coluna Orçamento definida como Número exibido como moeda, com a observação de que o arquivo mantém o texto como está
Um tipo de exibição, não uma conversão
CSV File Viewer - Smart CSViPhone e iPad · Android

Mostra uma coluna como número, moeda ou data sem reescrevê-la, então zeros à esquerda, IDs longos e códigos ficam exatamente como estão no arquivo.

O que ele faz

Um hábito que vale a pena

Antes de confiar em qualquer CSV que passou por uma planilha, confira três valores fáceis de estragar: um ID com zero à esquerda, o maior número do arquivo e um código que parece uma data. Se esses três sobreviveram, o resto quase certamente também. O guia CSV vs XLSX explica por que isso acontece com qualquer planilha, não só com o Excel.

Perguntas

Como impedir que o Excel remova os zeros à esquerda em um CSV?
Não abra o CSV com dois cliques. Use Dados → De Texto/CSV, escolha Transformar Dados, defina as colunas afetadas como Texto e então carregue. No Microsoft 365 você também pode desmarcar «Remover os zeros à esquerda e converter em um número» em Arquivo → Opções → Dados → Conversão automática de dados.
Por que o Excel muda números longos para 1,23E+15?
O Excel guarda números com 15 algarismos significativos e mostra os longos em notação científica. Os dígitos depois do 15º são trocados por zeros, então um ID de 16 dígitos é alterado de forma permanente se você salvar. Importe a coluna como Texto para manter todos os dígitos.
Como impedir que o Excel transforme números em datas em um CSV?
Importe o arquivo com Dados → De Texto/CSV e defina a coluna como Texto ou, no Microsoft 365, desmarque «Converter letras e números contínuos em uma data» nas configurações de conversão automática de dados. Mudar o formato depois não adianta, porque o valor já foi guardado como data.
Consigo recuperar os zeros à esquerda depois de salvar o CSV?
Não a partir do arquivo salvo: os zeros sumiram dele. Se os valores tinham tamanho fixo, você pode preenchê-los de novo com uma fórmula como TEXTO(A2; "00000"), mas a solução confiável é exportar de novo do sistema de origem e importar do jeito certo.
O Google Planilhas também altera os dados do CSV?
Sim, por padrão. Use Arquivo → Importar e desmarque «Converter texto em números, datas e fórmulas» para manter cada valor como texto.

mygems — Desenvolve o CSV Editor e o Smart CSV Viewer, dois apps que existem porque as planilhas desistem de arquivos grandes.