Um arquivo CSV pode conter 00123 corretamente enquanto uma planilha mostra 123 depois de abri-lo. O arquivo armazena campos de texto; o aplicativo que importa decide como interpretá-los. Preserve os identificadores como texto na importação e confira o resultado salvo antes de substituir o original.
Um identificador não é necessariamente um número
Use aritmética para quantidades, como uma contagem ou um preço. Trate um código postal, uma chave de catálogo ou um identificador de conta de acordo com o seu significado: os dígitos podem ser rótulos, e não uma quantidade para somar. Zeros à esquerda, sequências longas de dígitos e códigos parecidos com datas podem ser danificados por uma conversão indesejada.
A orientação da Microsoft sobre zeros à esquerda e números grandes explica como importar as colunas adequadas como texto. Ela também documenta controles de conversão automática em versões compatíveis do Excel. Verifique a sua versão; as mesmas configurações não existem em todas as edições.
Um exemplo de CSV original e fictício
Estes são registros inventados para aprendizado, não dados reais de contas ou clientes. Baixe o CSV de exemplo.
item_id,reference,label,quantity
00123,12345678901234567890,JAN1,7
00007,98765432109876543210,1E10,12
| Coluna | Significado pretendido | Tipo na importação |
|---|---|---|
| item_id | Um identificador de cinco caracteres | Texto; preservar 00123 e 00007 |
| reference | Uma sequência longa de referência | Texto; preservar todos os dígitos |
| label | Um código, não uma data nem um expoente | Texto; manter JAN1 e 1E10 literalmente |
| quantity | Uma contagem | Número inteiro, após validação |
O CSV não carrega essa tabela de tipos de coluna como um esquema imposto universalmente. Incluí-la nas instruções de repasse pode evitar que outro aplicativo adivinhe de outro modo.
Importe de forma deliberada no Excel
- Guarde uma cópia inalterada do CSV de origem.
- Use o fluxo de importação de texto/CSV do aplicativo, em vez de confiar nas suposições automáticas de um clique duplo.
- Confira a pré-visualização e defina as colunas parecidas com identificadores como texto antes de aplicar a conversão. Em um fluxo com consulta, inspecione ou substitua qualquer etapa automática de mudança de tipo, conforme necessário.
- Verifique o separador, a codificação e o tratamento de valores parecidos com datas.
- Carregue os dados e compare os identificadores exatos com a origem.
- Depois de exportar, inspecione o CSV resultante em um editor de texto e importe-o de novo usando os tipos de coluna pretendidos.
As instruções da Microsoft para importar e exportar arquivos de texto descrevem a diferença entre abrir e importar. Os nomes de menu variam conforme a plataforma e a versão. Um formato de exibição personalizado com cinco zeros pode mostrar 123 como 00123, mas isso não equivale a preservar o identificador de texto original nem a recuperar dígitos já perdidos.
Verifique as strings com Python
A documentação do módulo csv do Python descreve a leitura dos campos como strings por padrão, com exceções específicas para opções de conversão. Esta pequena verificação usa apenas a biblioteca padrão:
import csv
with open("identifier-example.csv", newline="", encoding="utf-8") as f:
rows = list(csv.DictReader(f))
assert rows[0]["item_id"] == "00123"
assert rows[0]["reference"] == "12345678901234567890"
assert rows[1]["label"] == "1E10"
quantities = [int(row["quantity"]) for row in rows]
assert sum(quantities) == 19
As verificações convertem de propósito apenas a coluna quantity. Elas demonstram o conteúdo do arquivo de exemplo, não uma garantia sobre uma exportação ou um aplicativo de planilha qualquer.
O que não pode ser recuperado automaticamente
Se um identificador longo já foi arredondado e salvo por cima do original, mudar o formato da célula para texto não reconstrói os dígitos perdidos. Restaure a partir de uma origem inalterada. Se 123 pode significar 00123 ou 123, completá-lo com zeros é uma decisão de regra de negócio, não uma prova do valor original.
Colocar um campo CSV entre aspas é uma sintaxe para preservar delimitadores e outros caracteres; isso não força universalmente uma planilha a tratar o campo como texto. Um bom repasse informa a codificação, o separador, os tipos de coluna pretendidos e as regras de validação. Para um problema relacionado de compartilhamento de documentos, veja disponibilidade e portabilidade de fontes no Word.
