Ir para o conteúdo
AZ Tools

Porque é que o Excel estraga o seu CSV e como impedi-lo

Um ficheiro CSV é texto. Abra-o no Excel e deixa de o ser, porque à medida que lê cada campo o Excel decide o que esse campo deve ser e reescreve-o em conformidade. Quase sempre acerta e ninguém repara. Quando falha, o estrago é silencioso, torna-se permanente assim que grava, e acaba por ser culpa de quem enviou o ficheiro.

Os zeros à esquerda caem primeiro

Um campo com 007 parece ao Excel o número sete com dois caracteres redundantes à frente, e é em sete que o transforma. O mesmo acontece a códigos postais, códigos de balcão, números de peça e a qualquer identificador cuja largura tenha significado.

Este é o fácil de apanhar, porque a coluna salta visivelmente para a direita e os zeros desaparecem. É também o que as pessoas remendam à mão, reescrevendo os valores com um apóstrofo à frente, o que aguenta exatamente até à exportação seguinte.

O Excel guarda quinze dígitos significativos e mais nenhum

Este é o que faz estragos a sério, porque nada nele parece errado. Um valor guardado como número no Excel mantém quinze dígitos significativos. Cole uma referência de encomenda de dezasseis dígitos, um identificador de transação longo ou um número ao estilo de um cartão, e o último dígito passa a zero.

A célula continua a mostrar um número longo. Não há realce nem aviso. Simplesmente o valor deixou de ser o que tinha, e qualquer pesquisa contra ele passa a falhar por um motivo que leva uma tarde a descobrir. Tudo o que passe de quinze dígitos tem de ser guardado como texto, e nenhuma mudança de formato o recupera depois, porque os dígitos já não estão naquilo que foi escrito em disco.

Os códigos parecidos com datas tornam-se datas

Escreva 3-1 e o Excel devolve-lhe 1 de março. Escreva SEPT1 e obtém 1 de setembro. Não é um exemplo forçado: aconteceu à genética em larga escala, porque símbolos de genes como SEPT1, MARCH1 e DEC1 têm exatamente a forma que o interpretador de datas procura.

O problema foi tão generalizado que, em 2020, a comissão responsável pela nomenclatura dos genes humanos renomeou os símbolos afetados em vez de continuar a perder a discussão com uma folha de cálculo. Se renomear genes era o caminho mais fácil, convém assumir que os seus códigos de produto nada têm de especial.

O problema da codificação é à parte, e chateia na mesma

Um CSV gravado como UTF-8 sem marca de ordem de bytes abre no Excel sob a codificação antiga do sistema, o que transforma cada carácter acentuado ou não latino em caracteres sem sentido. Acrescente a marca e o ficheiro idêntico abre limpo.

É por isso que um colega vê uma folha perfeita e outro vê lixo a partir da mesma exportação. O ficheiro não mudou entre os dois; as duas máquinas apenas adivinharam codificações diferentes.

Nem o delimitador é fixo

O Excel nem sempre separa por vírgulas. Onde o separador decimal é a vírgula, o que abrange boa parte da Europa, o Excel espera ponto e vírgula entre campos, e um ficheiro separado por vírgulas chega como uma única coluna alta de texto.

O ficheiro não está malformado. Está a ser lido sob um pressuposto regional diferente daquele com que foi escrito, o que é o mesmo tipo de problema da codificação e produz a mesma queixa: na minha máquina funciona.

O que evita mesmo tudo isto

Deixe de abrir ficheiros CSV com duplo clique. Use antes o caminho da importação, em Dados, e defina como Texto cada coluna frágil antes de os dados aterrarem na folha. Essa caixa de importação é o único momento em que a decisão lhe pertence e não ao Excel.

As versões recentes também expõem a adivinhação como definição, em Opções e depois Dados, onde a conversão automática de datas, números longos e zeros à esquerda pode ser desligada separadamente. Numa máquina que lida com dados exportados com frequência, vale a pena desligar as três.

A solução duradoura é deixar de enviar CSV a quem o vai abrir no Excel. Num livro .xlsx a sério, cada célula transporta o seu próprio tipo, por isso uma coluna escrita como texto continua texto seja quem for a abri-la, na máquina e com as definições regionais que forem.

Verificar um ficheiro que já passou pelo Excel

Depois de um ficheiro ser gravado a partir do Excel, o estrago vive nos valores guardados e não naquilo que se vê, por isso alargar a coluna não prova nada. Procure identificadores mais curtos do que deviam ser, números longos a acabar num zero suspeitosamente redondo, e tudo o que numa coluna de códigos se tenha tornado uma data.

A verificação mais rápida é abrir o ficheiro original como texto simples em vez de folha de cálculo e comparar um punhado de valores conhecidos com o que a folha mostra. Se não coincidirem, a folha não é uma vista dos seus dados: é outro conjunto de dados, e o que vale a pena guardar é o ficheiro de texto.

Ferramentas relacionadas