Por qué Excel estropea los códigos de los archivos CSV
CSV es un formato de texto: no tiene tipos. El programa que abre el archivo se los inventa. Excel se los inventa con mucha agresividad y por eso se rompen en él los códigos.
Tres formas de perder datos con un doble clic
Ceros iniciales
El valor 00123 parece un número, así que Excel lo convierte en el número 123. Los ceros no están ocultos: han desaparecido. Si lo guarda de nuevo en CSV, en el archivo irá 123. Les pasa a los códigos postales como 08001 o 01010, a las referencias de artículo, a los códigos de barras y a los números de cuenta o de empleado.
Notación científica
El identificador 7812345678901234 se convierte en 7,81235E+15. Parece un problema de visualización, pero no lo es.
Pérdida de precisión
Excel guarda los números en doble precisión, es decir, 15–16 cifras significativas. Un identificador de dieciséis dígitos está en el límite y uno de diecisiete lo pasa: los últimos dígitos se sustituyen por ceros para siempre. Ensanchar la columna no ayuda: los datos ya se han perdido.
También sufre el texto que solo se parece a una fecha: Excel convierte tan campante un código de producto como 1-2 o MAR1 en una fecha.
Por qué «cambiar el formato de la celda» no lo arregla
Un formato de celda cambia cómo se muestra un valor, no lo que contiene. Cuando usted cambia el formato, la conversión ya se hizo mientras se leía el archivo. La única salida es no dejar que Excel decida por usted en el momento de abrir.
Enfoques que funcionan
- El asistente de importación de texto. No haga doble clic en el archivo; impórtelo: Datos → Desde texto o CSV y, para cada columna de códigos, elija el tipo Texto. Es pesado, pero funciona.
- Las comillas no ayudan. Error muy extendido: Excel sigue reconociendo
"00123"como un número. Las comillas de un CSV solo marcan los límites de un campo. - Un apóstrofo delante. Si genera usted el CSV, Excel mostrará
'00123como texto, pero para cualquier otro programa el apóstrofo pasa a formar parte de los datos. - No abrirlo en Excel. Si la tarea es mirar, filtrar, conciliar o exportar un subconjunto, un Excel intermedio no hace falta.
Cómo se hace aquí
El tipo de una columna se decide por una muestra de valores, con tres reglas que Excel ignora:
- un valor con un cero inicial hace que toda la columna sea de texto;
- una columna en la que todos los valores tienen la misma longitud de once o más dígitos se trata como código y no como número: así se comportan los números de cuenta y los identificadores personales;
- los valores de más de 15 dígitos son siempre texto: pasado ese límite, la aritmética de doble precisión miente.
Al exportar a XLSX esa columna sigue siendo de texto, así que a Excel no le queda nada que «arreglar».
Preguntas frecuentes
¿Se pueden recuperar los ceros perdidos?
Si conoce la longitud del código, sí: rellénelo con ceros por la izquierda (un código postal tiene 5 dígitos, un DNI 8). Si se perdió precisión en un número largo, no: esos dígitos no se pueden restaurar.
¿Las Hojas de cálculo de Google se comportan igual?
De forma parecida: se descartan los ceros iniciales y los números largos se redondean. Los detalles difieren; el fondo es el mismo.
Entonces, ¿por qué todo el mundo usa CSV?
Porque cualquier cosa lo puede leer. El problema no es el formato, sino que los tipos no se escriben, así que cada lector los adivina por su cuenta.
Gratis para usar. Su archivo no se sube a ningún servidor. Versión para Windows — 4.6 MB, sin instalación: detalles. Pro — 29 USD una sola vez: precio.