Por qué Excel arruina tu CSV
Los códigos postales pierden el cero inicial, los códigos de producto se vuelven fechas y los identificadores largos se redondean en silencio. Ocurre al abrir, no al guardar, y por eso tanta gente nunca descubre qué salió mal.
Última revisión:
El daño ocurre al abrirlo
Esta es la parte que hace que el problema sea tan difícil de diagnosticar. Un CSV es un archivo de texto: cada valor que contiene son caracteres, y nada en el archivo dice qué significa cada uno. Cuando Excel abre uno, adivina un tipo para cada columna, convierte los valores para que coincidan y, desde ese momento, trabaja con la versión convertida. Si guardas el archivo, las conversiones se escriben en él.
Así que el archivo estaba bien, el que guardaste no lo está, y en ningún momento nada te avisó. La gente concluye que la exportación estaba mal, vuelve a exportar y obtiene el mismo resultado, porque el daño ocurre en su propia computadora, después de la descarga.
Las cuatro conversiones que causan el daño
Se eliminan los ceros a la izquierda. Un código postal como 01234, un código de departamento francés, un número de cuenta, un teléfono que empieza con cero: todos parecen números, así que el cero se descarta como si no significara nada. Sí significa algo: es parte del identificador.
Los números largos se redondean. Una hoja de cálculo guarda los números en coma flotante con unas quince cifras significativas, así que una referencia de pedido, un número de tarjeta de crédito, un IMEI o un identificador de 64 bits se redondea sin avisar: las últimas cifras se vuelven ceros. La celda parece un número y es el número equivocado.
Todo lo que se parece a una fecha se reformatea según la convención local. 03/05 es marzo en un país y mayo en otro, así que el mismo archivo abierto en dos oficinas produce dos conjuntos de datos distintos. Peor aún, se convierten valores que nunca fueron fechas: un nombre de gen como SEPT1 se vuelve una fecha, un problema tan persistente que los genetistas acabaron cambiándoles el nombre a los genes en lugar de seguir luchando contra él.
Los caracteres acentuados se convierten en mojibake. Un CSV no guarda ningún registro de su codificación de caracteres, así que un archivo guardado en UTF-8 y leído con una página de códigos antigua (o al revés) destroza precisamente las filas que tienen nombres con acentos.
La solución: importar, no abrir
Nunca hagas doble clic en un CSV que te importe. El doble clic le da permiso a Excel para adivinar, y adivina con total seguridad.
En su lugar, usa Datos → Desde el texto/CSV. El cuadro de importación te deja definir el tipo de cada columna antes de que se analice nada: marca la columna del código postal y la del identificador como Texto, y llegarán exactamente como están en el archivo. También te deja indicar la codificación y el delimitador en lugar de que se deduzcan. Toma veinte segundos y es toda la solución.
Lo mismo aplica en Google Sheets: Archivo → Importar, y desactiva “Convertir texto en números, fechas y fórmulas”. LibreOffice Calc muestra el cuadro de tipos de columna de forma predeterminada, uno de los pocos aspectos en los que simplemente se porta mejor.
Revisa antes de importar
Cuando algo ya salió mal, el primer paso útil es mirar el archivo sin que ninguna hoja de cálculo lo toque. Ver el CSV muestra los valores exactamente como dicen los bytes: con los ceros a la izquierda, los números largos completos y las fechas como el texto con que se escribieron. Eso te dice de inmediato si lo que falló fue la exportación o la importación.
También te muestra las dos cosas que un CSV nunca dice de sí mismo: el delimitador (una coma, un punto y coma o un tabulador; las configuraciones regionales europeas exportan con punto y coma porque la coma es su separador decimal) y la codificación. Conocer ambos antes de importar elimina casi todas las conjeturas que quedan.
Si eres tú quien genera el CSV
Unas cuantas decisiones al exportar evitan todo esto más adelante.
Escribe UTF-8 con marca de orden de bytes si el archivo va a abrirse en Excel en Windows. Excel usa esa marca para detectar UTF-8 y, sin ella, destroza los caracteres acentuados: uno de los pocos casos en los que agregar una BOM es lo correcto y no una molestia.
Pon entre comillas cada campo que pueda malinterpretarse, y siempre las columnas de identificadores. Las comillas no impiden que Excel convierta al abrir, pero dejan clara la intención para cualquier otro programa que lo lea.
Considera no usar CSV en absoluto. Si quien lo recibe acepta JSON o una hoja de cálculo de verdad, ambos llevan los tipos de forma explícita y ninguno tiene estos problemas. La virtud del CSV es que todo lo lee; su debilidad es que nada se pone de acuerdo sobre lo que dice.
Preguntas frecuentes
¿Puedo deshacer el daño después de guardar?
No de forma fiable. Un cero inicial eliminado y una cifra redondeada ya no están: no queda nada en el archivo para recuperarlos. Vuelve a exportar desde la fuente original; por eso vale la pena el espacio en disco de conservar intacta la exportación original.
¿Por qué mi CSV se abre como una sola columna larga?
El delimitador no coincide con lo que espera la hoja de cálculo: normalmente es un archivo con punto y coma abierto en una configuración regional que usa comas, o al revés. El cuadro de importación te deja indicarlo, lo que es más rápido que cambiar la configuración regional de tu sistema.
¿Qué es el carácter raro al principio del nombre de mi primera columna?
Una marca de orden de bytes leída como texto en lugar de como indicación de codificación. Es la misma marca que arregla los caracteres acentuados en Excel, y por eso es a la vez útil y molesta; la mayoría de los analizadores de CSV bien hechos la quitan automáticamente.
¿Existe un estándar para CSV?
Solo una especificación orientativa de 2005 que describe lo que hace la mayoría de las herramientas, y mucho software que hace otra cosa. Por eso los delimitadores, las comillas, los finales de línea y las codificaciones varían, y por eso detectarlos en lugar de suponerlos es lo único que funciona con archivos reales.
¿Por qué una fila se parte en varias líneas en mi editor de texto?
Porque un campo entre comillas puede contener saltos de línea legítimamente, normalmente un campo de dirección. El registro sigue siendo una sola fila; cualquier cosa que divida el archivo por saltos de línea dañará precisamente esas filas, y por eso dividir por comas o saltos de línea es la forma equivocada de leer un CSV.
También vale la pena leer
PDF demasiado pesado para el correo
Las tres razones por las que un PDF pesa mucho, y qué solución sirve para el tuyo.
¿Qué formato de imagen?
Una pregunta lo decide. JPG, PNG, WebP y AVIF comparados con honestidad.
PDF escaneados y OCR
Por qué un escaneo no contiene texto, qué agrega el OCR y el ajuste que decide la precisión.