Artigo
Por que o Excel bagunça seus arquivos CSV
Um ID de paciente que começa com três zeros. Um gene chamado SEPT2. Um número de conta com dezesseis dígitos. Abra qualquer um desses em uma planilha como um arquivo CSV simples e o importador do Excel não apenas exibe: ele reescreve. Os zeros somem, o nome do gene vira uma data, e o número da conta perde os últimos dígitos. Nada disso é exatamente um bug, é o que acontece quando um adivinhador genérico de números e datas encontra um texto que só parece um número ou uma data. Veja o que realmente acontece com um arquivo CSV no momento em que o Excel o abre, e como evitar isso antes que aconteça.
Zeros à esquerda somem
Digite 02134 em uma célula e o tipo de coluna padrão do Excel, Geral, lê isso como um número e descarta o zero à esquerda: 2134. Isso afeta qualquer código armazenado como dígitos mas que não é realmente uma quantidade: CEPs dos EUA, códigos postais franceses, números de funcionário ou de fatura, números de telefone. Nada é tecnicamente perdido no arquivo CSV subjacente, o texto ao lado da célula continua igual, até você salvar a planilha, momento em que o Excel grava de volta o que estava exibindo, e os zeros somem para sempre. A correção é dizer ao Excel que a coluna é texto antes que ele tenha a chance de adivinhar: pelo caminho Dados > De Texto/CSV (ou Obter Dados > De Arquivo) você pode definir o tipo de dado de cada coluna explicitamente, ou adicionar um apóstrofo antes de um valor em uma única célula para forçar texto.

Texto vira data sem avisar
O mesmo adivinhador também procura texto com formato de data. Uma célula contendo MAR1 ou SEPT2, lida como 1º de março ou 2 de setembro, é convertida silenciosamente para um valor de data e reformatada, sem nenhum aviso mostrado. Isso não é hipotético: em 2020, o Comitê de Nomenclatura de Genes Humanos (HUGO) renomeou cerca de 27 símbolos de genes humanos, incluindo SEPT2 e MARCH1, especificamente porque programas de planilha continuavam transformando-os em datas toda vez que um conjunto de dados era aberto, um problema sério o suficiente para que um levantamento de 2016 sobre artigos de genômica encontrasse erros de autocorreção como esse em cerca de um em cada cinco trabalhos que traziam arquivos Excel suplementares. A lição vale além dos nomes de genes: qualquer código alfanumérico curto que por acaso pareça um dia e um mês corre o mesmo risco assim que alguém abrir seu CSV em uma planilha, não só a sua.
Números muito longos perdem os últimos dígitos
O Excel armazena todo número como um valor de ponto flutuante com 15 dígitos significativos de precisão, um limite que a própria Microsoft documenta. Um número de cartão ou conta com dezesseis dígitos, como 4111111111111111, é arredondado para caber, então o último dígito ou dois viram zero silenciosamente e o valor deixa de ser o que você digitou. Formatar a célula depois não traz os dígitos perdidos de volta, porque o número armazenado já foi arredondado; a única correção é importar a coluna como texto, ou colocar um apóstrofo antes do valor, antes que o Excel o trate como número.

Texto acentuado vira caracteres bagunçados
A codificação é um tipo de falha separado da autocorreção. Um arquivo CSV sem marca de ordem de byte é só bytes simples; se ele foi salvo como UTF-8, o Excel no Windows geralmente vai abri-lo assumindo a própria página de código do sistema em vez disso, então letras acentuadas, símbolos de moeda e emojis saem como caracteres ilegíveis, uma string como café aparecendo como algo mais parecido com café. O caminho seguro ao produzir um CSV para o Excel é salvá-lo como CSV UTF-8 ou adicionar uma marca de ordem de byte UTF-8; o caminho seguro ao consumir um é importar pelo caminho Dados > De Texto/CSV, que permite escolher a codificação de origem explicitamente em vez de confiar que um clique duplo vai adivinhar certo.
Movendo dados entre formatos sem abrir no Excel
Nada disso é realmente um bug do Excel, é o que o adivinhador de números e datas de uma planilha foi feito para fazer, e isso se aplica não importa como o arquivo seja aberto, não só no Excel. O jeito mais seguro de remodelar um arquivo CSV ou conferir que uma coluna realmente continua texto antes de chegar a qualquer planilha é trabalhar nele diretamente: nosso conversor de dados analisa CSV com um analisador padrão que respeita aspas e nunca reinterpreta o tipo de um valor, então um CEP ou nome de gene continua exatamente o texto que você deu. Ele roda inteiramente no seu navegador, nada que você cola é enviado a lugar nenhum. Isso só protege a etapa de conversão, porém: se o resultado ainda vai ser aberto em uma planilha depois, marque as colunas sensíveis como texto lá também.
Ferramentas neste artigo
Perguntas frequentes
Como faço para impedir que o Excel remova zeros à esquerda de um CSV?
Não abra o arquivo com um clique duplo. Importe-o pelo caminho Dados > De Texto/CSV (ou Obter Dados), que mostra um seletor de tipo de dado coluna por coluna; defina a coluna de CEP, ID ou telefone como Texto antes de terminar a importação. Uma correção rápida por célula é digitar um apóstrofo antes do valor, como '02134, o que força texto sem mudar o que é exibido.
Por que o Excel transformou meu ID ou código em uma data?
O tipo de coluna Geral do Excel procura ativamente texto com formato de data, padrões como uma palavra curta mais um número, ou dois números separados por traço ou barra, e converte qualquer coisa que combine, sem pedir confirmação. Foi exatamente isso que forçou a renomeação de símbolos de genes como SEPT2 e MARCH1 em 2020. Importe a coluna como Texto, do mesmo jeito que para zeros à esquerda, para impedir a adivinhação antes que ela aconteça.
Converter meu CSV de outra forma evita esses problemas por completo?
Evita para aquela etapa de conversão, não para sempre. Um analisador que trata todo campo como texto simples, como o nosso conversor de dados, não vai reescrever um CEP ou um nome de gene ao transformar um CSV em JSON. Mas se o resultado ainda acabar sendo aberto em uma planilha depois, por você ou por quem o recebe, o importador daquele programa ganha outra chance de reinterpretar os valores, então as colunas sensíveis precisam ser marcadas como texto lá também.