Um arquivo CSV é quase o mais simples que um formato de dados pode ser. É texto puro, uma linha por registro, com valores separados por vírgulas:
name,quantity,priceWidget,12,4.50
É toda a ideia, e é por isso que o CSV sobreviveu a todo formato proprietário que quis substituí-lo. Qualquer programa lê, é minúsculo, abre em qualquer editor de texto, e você vê exatamente o que tem dentro.
É também o formato com mais chance de estragar seus dados sem avisar, e vale conhecer as razões antes de abrir o próximo.
Isso pega gente o tempo todo, e é um problema de idioma, não um bug de software.
Em português, alemão, francês, espanhol e muitas outras configurações regionais, a vírgula é o separador decimal — 4,50 é quatro e meio. Então a vírgula não pode também separar campos, e as planilhas nesses idiomas escrevem e esperam ponto e vírgula:
name;quantity;priceWidget;12;4,50
Os dois arquivos se chamam CSV. Abra a versão com ponto e vírgula num programa que espera vírgulas e cada linha colapsa numa coluna só. Ao contrário, acontece o mesmo.
Não há marca nenhuma dentro do arquivo dizendo qual é. A única solução confiável é importar em vez de dar dois cliques, para você mesmo indicar o delimitador.
E se um valor contém uma vírgula? Ele é envolvido em aspas duplas:
"Smith, John",12,4.50
E quando um valor contém aspas, elas são duplicadas para escapar. Um campo pode até conter uma quebra de linha, desde que entre aspas — por isso você não pode contar registros contando linhas.
Toda ferramenta CSV decente lida com isso. Arquivos feitos à mão — qualquer coisa montada juntando textos com vírgulas — normalmente não, e a quebra aparece justo quando o nome ou endereço de alguém tem uma vírgula.
Um CSV não contém nenhuma declaração da sua codificação. Diferente de HTML ou XML, não há onde dizer «isto é UTF-8». O programa que abre precisa adivinhar.
O Excel no Windows tradicionalmente adivinha a página de código local em vez de UTF-8. Então um CSV com texto chinês, japonês ou coreano — ou com acentos — abre como símbolos ilegíveis mesmo com o arquivo perfeitamente correto.
Esta é a parte que custa trabalho de verdade, porque é silenciosa e acontece antes de você fazer qualquer coisa.
Um CSV não tem tipos — todo valor é texto. A planilha adivinha o que cada um significa, e erra com confiança de várias maneiras recorrentes:
01234 vira 1234. Telefones, contas, códigos de produto e documentos sofrem o mesmo.1.23457E+15, e os dígitos originais se perdem, não ficam escondidos.3-10 vira 3 de outubro. É o famoso problema que obrigou geneticistas a renomear genes cujos símbolos viravam datas.O detalhe crítico: se você então salvar, o estrago é gravado de volta. Os valores originais não se recuperam da cópia salva.
Dois hábitos evitam tudo isso. Guarde uma cópia intocada de qualquer CSV que receber. E quando o conteúdo tiver códigos, identificadores ou qualquer coisa com zeros à esquerda, use a importação e marque essas colunas como texto antes dos dados aterrissarem.
E o que ele não faz: várias abas, fórmulas, formatação, tipos de célula, células mescladas, gráficos ou qualquer coisa aninhada. São as razões de os formatos de planilha existirem ao lado dele.