Un archivo CSV es prácticamente lo más simple que puede ser un formato de datos. Es texto plano, una línea por fila, con los valores separados por comas:
name,quantity,priceWidget,12,4.50
Esa es toda la idea, y por eso CSV ha sobrevivido a todos los formatos propietarios que pretendían reemplazarlo. Cualquier programa lo lee, es diminuto, abre en cualquier editor de texto y ves exactamente lo que contiene.
También es el formato con más probabilidades de dañar tus datos sin avisar, y conviene conocer las razones antes de abrir el próximo.
Esto pilla a todo el mundo, y es un problema de idioma, no un fallo de software.
En español, alemán, francés, portugués y muchas otras configuraciones regionales, la coma es el separador decimal: 4,50 son cuatro y medio. Entonces la coma no puede separar también campos, así que las hojas de cálculo en esos idiomas escriben y esperan punto y coma:
name;quantity;priceWidget;12;4,50
Los dos archivos se llaman CSV. Abre la versión con punto y coma en un programa que espera comas y cada fila se colapsa en una sola columna. Al revés ocurre lo mismo.
No hay ninguna marca dentro del archivo que diga cuál es. La única solución fiable es importar en vez de hacer doble clic, para indicar tú el delimitador.
¿Y si un valor contiene una coma? Se envuelve en comillas dobles:
"Smith, John",12,4.50
Y cuando un valor contiene comillas, se duplican para escaparlas. Un campo puede incluso contener un salto de línea si va entrecomillado, razón por la cual no puedes contar filas contando líneas.
Cualquier herramienta CSV decente maneja esto. Los archivos hechos a mano — cualquier cosa montada uniendo cadenas con comas — normalmente no, y el fallo aparece justo cuando el nombre o la dirección de alguien lleva una coma.
Un CSV no contiene ninguna declaración de su codificación. A diferencia de HTML o XML, no hay dónde decir «esto es UTF-8». El programa que lo abre tiene que adivinar.
Excel en Windows tradicionalmente adivina la página de códigos local en vez de UTF-8. Así que un CSV con texto chino, japonés o coreano — o con acentos europeos — abre como símbolos ilegibles aunque el archivo sea perfectamente correcto.
Esta es la parte que cuesta trabajo real, porque es silenciosa y ocurre antes de que hayas hecho nada.
Un CSV no tiene tipos: todo valor es texto. La hoja de cálculo adivina qué significa cada uno, y se equivoca con aplomo de varias maneras recurrentes:
01234 se vuelve 1234. Teléfonos, números de cuenta, códigos de producto y documentos de identidad sufren lo mismo.1.23457E+15, y los dígitos originales se pierden, no se ocultan.3-10 se convierte en 3 de octubre. Es el famoso problema que obligó a renombrar genes cuyos símbolos acababan convertidos en fechas.El detalle crítico: si luego guardas, el daño se escribe de vuelta. Los valores originales no se recuperan de la copia guardada.
Dos hábitos lo evitan todo. Guarda una copia intacta de cualquier CSV que recibas. Y cuando el contenido incluya códigos, identificadores o algo con ceros iniciales, usa la importación y marca esas columnas como texto antes de que los datos aterricen.
Y lo que no puede: varias hojas, fórmulas, formato, tipos de celda, celdas combinadas, gráficos ni nada anidado. Por eso existen los formatos de hoja de cálculo junto a él.