mygems

CSV vs XLSX: qué formato usar y cuándo

El CSV es un archivo de texto con comas. El XLSX es un archivo comprimido de aplicación. Esa diferencia decide todo: tamaño, fórmulas, fechas y quién puede abrirlo.

Por uos ·

Una sola frase explica casi todo: el CSV es un archivo de texto con comas; el XLSX es una carpeta comprimida de XML que solo entiende un programa de hojas de cálculo. Casi todas las diferencias prácticas salen de ahí.

La pregunta útil rara vez es "cuál es mejor". Es "a quién le voy a entregar el archivo y qué va a sobrevivir por el camino".

La respuesta rápida

  • Entregas datos a un programa (una importación, una API, un script, una base de datos): CSV.
  • Entregas un documento a una persona (formato, fórmulas, varias hojas): XLSX.
  • El archivo es grande (digamos, más de 100 MB o 500.000 filas): CSV.
  • Los valores deben volver exactamente como salieron (códigos postales, códigos de producto, números de teléfono, ID largos): CSV, y avisarlo, porque la hoja de cálculo que lo reciba es la que los va a estropear.

Qué es realmente cada uno

Un CSV tiene una línea por fila, valores separados por comas y comillas alrededor de cualquier valor que contenga una coma. Se puede leer en un editor de texto. Se puede escribir con echo. Existe una especificación, la RFC 4180, y un acuerdo casi universal de ignorar partes de ella, por eso los delimitadores cambian según el país y por eso los CSV rotos son un tema aparte.

Guarda valores y nada más. Sin tipos, sin formatos, sin fórmulas, sin colores, sin segunda hoja. Una celda con 007 y una celda con el número siete son indistinguibles una vez escritas: ambas son solo los caracteres entre dos comas, y lo que pase después depende por completo de quién las lea.

Un XLSX es un archivo ZIP. Cámbiale la extensión a .zip, descomprímelo y obtendrás un directorio de XML: un archivo por hoja, una tabla de cadenas compartidas, una tabla de estilos, archivos de relaciones. Guarda todo lo que sabe una hoja de cálculo: tipos de celda, formatos numéricos, fórmulas y sus resultados en caché, gráficos, formato condicional, paneles inmovilizados, macros en la variante .xlsm.

Lado a lado

CSVXLSX
Tipo de archivoTexto planoArchivo XML comprimido
Límite de filasNinguno1.048.576 por hoja
Límite de columnasNinguno16.384
Varias hojasNoSí
FórmulasNoSí
Formato, gráficosNoSí
Tipos de datosNinguno: todo es textoExplícito en cada celda
Tamaño, 1 M de filas × 10 columnas~150 MB~40 MB
Se abre en un editor de textoSíNo
Legible en 20 añosCasi seguroProbablemente
Diferencias en gitLimpiasImposibles

Dos filas merecen una explicación.

El tamaño, y por qué la respuesta se invierte

El XLSX se comprime, así que para los mismos datos suele ocupar menos en disco, a menudo tres o cuatro veces menos. Eso hace que el CSV parezca la opción equivocada para datos grandes, y es justo al revés.

En un archivo grande no importa el tamaño en disco, sino lo que pasa al abrirlo. Un XLSX debe descomprimirse y analizarse hasta formar un modelo de objetos antes de que veas la primera fila; todo acaba en memoria. Un CSV se puede leer línea a línea, así que una herramienta puede procesar en flujo un archivo de 5 GB que jamás podría cargar entero. Por eso toda respuesta a "cómo manejo este archivo con DuckDB" empieza con un CSV, y por eso importa el límite de filas de arriba: una exportación de tres millones de filas no puede ser un XLSX en una sola hoja, sea cual sea el tamaño.

Los tipos, y el viaje de ida y vuelta que se come tus datos

Esta es la diferencia que de verdad cuesta trabajo.

Como el CSV no lleva tipos, la hoja de cálculo tiene que adivinar al importar. Las suposiciones son consistentes y consistentemente erróneas, siempre de las mismas cuatro formas:

  • 01234 se convierte en 1234: se pierde el cero inicial de un código postal.
  • 4019283746501928 se convierte en 4.01928E+15: un ID en notación científica, y los últimos dígitos desaparecen, no se ocultan.
  • 3/4/2026 se convierte en el 4 de marzo o el 3 de abril según la configuración regional.
  • MAR1, SEPT2, DEC5 se convierten en fechas. Por esto, en 2020 los investigadores de genética cambiaron el nombre de 27 genes humanos.

Abre un CSV en Excel, guárdalo otra vez como CSV y esos cambios quedan fijados en el archivo. El CSV no perdió los datos. Los perdió la hoja de cálculo con la que lo abriste. Y esa es la razón para leer un CSV con algo que lo lea como CSV, y no como un documento de hoja de cálculo:

CSV File Viewer - Smart CSViPhone y iPad · Android

Lee el archivo como CSV en lugar de importarlo: sin conversión de tipos, sin adivinar fechas según la región, y con consultas en SQL o en lenguaje natural sobre los valores tal como están escritos.

Qué hace

Elegir según la situación

Usa CSV cuando:

  • Al otro lado hay algo automatizado: una importación a una base de datos, un script, una API.
  • El archivo es grande, o va creciendo.
  • Los datos deben ir y volver byte por byte.
  • Va a un control de versiones y quieres ver qué cambió.
  • Necesitas que se pueda leer dentro de una década sin suponer nada sobre el software.

Usa XLSX cuando:

  • Lo abre una persona y el diseño forma parte del mensaje.
  • Hay fórmulas que deben seguir activas.
  • Los datos son realmente de varias hojas.
  • Los tipos de celda importan y no controlas con qué se abrirá. Este es el argumento honesto a favor del XLSX: tipos que el receptor no puede interpretar mal.
  • Necesitas gráficos, filtros o formato condicional dentro del propio archivo.

No uses ninguno cuando: el conjunto de datos es más grande que una hoja de cálculo y lo vas a consultar repetidamente. Eso es trabajo para Parquet o para una base de datos. Parquet es columnar, tiene tipos y está comprimido, y tanto DuckDB como pandas lo leen de forma nativa.

Lo que la gente entiende mal

"El CSV es un formato de Excel." No lo es; Excel solo lo abre, y por eso ocurre la conversión de tipos de arriba. El CSV es veinte años anterior a Excel.

"XLS y XLSX son lo mismo." XLS es el formato binario anterior a 2007, que todavía llega desde sistemas antiguos. XLSX es el reemplazo basado en OOXML. Si te entregan un .xls, conviértelo. El Excel actual lo abre con advertencias y algunas herramientas lo rechazan directamente.

"El XLSX es más seguro porque es un formato de verdad." El XLSX puede llevar macros, vínculos externos y cargas DDE; el CSV es texto inerte, salvo por la inyección de fórmulas, donde un valor que empieza por =, +, - o @ es ejecutado por la hoja de cálculo que lo abre. Ambos exigen cuidado, en direcciones distintas.

"Convertir no pierde nada." De XLSX a CSV se pierden todas las fórmulas (te quedas con el último valor calculado), toda hoja que no sea la primera y todo el formato. De CSV a XLSX se añaden tipos que nunca estuvieron en los datos, y ahí es donde se estropean. Convertir un CSV a Excel en el móvil explica cómo hacerlo sin daños.

El único hábito que vale la pena

Cuando envíes un CSV con códigos, ID o fechas, dilo en el mensaje: "ábrelo con un paso de importación y pon la columna de ID como Texto". Dos líneas de correo evitan el fallo de calidad de datos más común en el trabajo de oficina, y ninguna elección de formato lo evita por sí sola.

Preguntas

¿Es mejor CSV o XLSX?
Ninguno es mejor en general; responden a preguntas distintas. El CSV sirve para entregar datos a un programa: es texto plano, no tiene límite de filas, se puede leer en flujo y vuelve sin cambios. El XLSX sirve para entregar un documento a una persona: lleva fórmulas, formato, varias hojas y tipos de celda explícitos.
¿Por qué Excel cambia mis números al abrir un CSV?
Porque un CSV no guarda tipos, así que Excel los deduce. Se quitan los ceros iniciales de los códigos postales, los ID de más de 15 dígitos pasan a notación científica y pierden para siempre sus últimos dígitos, y un texto como MAR1 se convierte en fecha. Si guardas el archivo de nuevo como CSV, esos cambios quedan en el archivo.
¿Es el XLSX más pequeño que el CSV?
Normalmente sí en disco, porque el XLSX es un archivo comprimido, a menudo tres o cuatro veces más pequeño para los mismos datos. Pero hay que descomprimirlo por completo y cargarlo en memoria antes de ver nada, mientras que un CSV se puede leer línea a línea, así que el CSV maneja archivos mucho más grandes que el XLSX.
¿Cuántas filas cabe en un archivo XLSX?
1.048.576 filas y 16.384 columnas por hoja, un límite estructural del formato y no de memoria. Un CSV no tiene ningún límite de filas, por eso las exportaciones de varios millones de filas casi siempre son CSV.
¿Se pierde algo al convertir CSV a XLSX?
No datos como tales, pero la conversión asigna tipos que nunca estuvieron en el CSV, y ahí es donde se dañan los códigos postales y los ID largos. En el otro sentido se pierde más, y es más visible: de XLSX a CSV desaparecen las fórmulas (solo quedan sus últimos valores calculados) y se descartan todas las hojas menos una, junto con todo el formato.
¿Cuál es la diferencia entre XLS y XLSX?
XLS es el formato binario de Excel anterior a 2007; XLSX es el formato Office Open XML que lo reemplazó, un archivo ZIP de archivos XML. Los archivos XLS siguen apareciendo desde sistemas antiguos y conviene convertirlos, porque algunas herramientas actuales los abren con advertencias y otras los rechazan por completo.

uos — Crea CSV Editor y Smart CSV Viewer, dos apps cuyo trabajo es justo lo que las hojas de cálculo hacen mal.