Lo que realmente guarda una celda
Una celda de hoja de cálculo contiene dos cosas distintas: un valor y un formato de número. El valor 0.15 puede mostrarse como 15%, como 0.15, como £0.15 o como 15.00%, y ninguna de esas presentaciones cambia el valor ni un ápice. Es el dato más útil que existe sobre las hojas de cálculo, y es la razón por la que Excel a CSV te pide elegir entre “Como se ven en Excel” y “Números sin formato, fechas ISO” en lugar de adivinar. La primera opción escribe exactamente el texto de la pantalla —15/03/2024, 1,234.50, 12%—, que es lo que hace el propio “Guardar como” de Excel y lo que espera una persona que lee el CSV. La segunda escribe números simples y fechas ISO, que es lo que espera una base de datos o un script. Si eliges la equivocada, la importación falla de una forma que parece que los datos están dañados.
Las fechas son números que se hacen pasar por fechas. Una celda de fecha guarda un número de días consecutivos, y el punto de partida depende del archivo: los libros creados con Excel para Windows cuentan desde 1900, los del antiguo Excel para Mac cuentan desde 1904, y entre ambos hay 1,462 días de diferencia. El sistema de 1900 es todavía más raro: da por hecho que existió el 29 de febrero de 1900, un error heredado de Lotus 1-2-3 que se mantiene desde entonces por compatibilidad. Estas herramientas leen el indicador de origen de cada libro y reproducen ese día bisiesto falso exactamente donde corresponde; por eso una fecha convertida aquí coincide con lo que muestra Excel en lugar de desplazarse cuatro años y un día.
Una fórmula y su resultado se guardan uno junto al otro. Un libro conserva el texto de la fórmula y el último valor que calculó. Las conversiones de libro a libro —ODS a XLSX, XLS a XLSX, XLSX a ODS— trasladan las fórmulas en sí, traducidas entre los dos vocabularios de funciones, así que la hoja se sigue recalculando cuando la editas; el puñado de funciones que solo existen en uno de los dos lados aparece como #NAME? hasta que las reemplaces. Todo lo que sale del mundo de las hojas de cálculo —CSV, JSON, XML— lleva solo el resultado calculado, porque ninguno de esos formatos tiene el concepto de fórmula.
El CSV no puede representar la mayor parte de un libro, y fingir lo contrario es justo donde se pierden datos. No tiene hojas, así que cada hoja se convierte en su propio archivo (y en un ZIP si las quieres todas). No tiene tipos de celda, así que cada campo es texto hasta que algo lo interpreta. No tiene formatos, ni fórmulas, ni gráficos, ni imágenes, ni colores, ni anchos de columna. Las celdas combinadas se tienen que resolver de una forma u otra: el valor en la primera celda o repetido en toda la combinación. Y no registra su propio delimitador, su separador decimal ni su codificación; por eso un archivo europeo con punto y coma y comas decimales cae en una sola columna en un Excel de Estados Unidos, y por eso el texto con acentos se convierte en caracteres raros a menos que el archivo empiece con una marca de orden de bytes (BOM).
El texto que parece un número es donde ocurre el daño real. Excel adivina celda por celda cuando abres un CSV: el código postal 01234 pierde su cero, un ID de pedido de 16 dígitos se convierte en 1.23457E+15 y ya no se puede recuperar, y el nombre del gen SEPT2 se convierte en una fecha, un problema tan serio que la comunidad genética les cambió el nombre a sus genes. CSV a Excel, en cambio, decide una sola vez por columna, a partir de todos sus valores, y solo convierte cuando toda la columna coincide; cualquier valor con ceros a la izquierda, y cualquier entero demasiado largo para que un número de JavaScript lo guarde con exactitud, se queda como texto. JSON a CSV aplica el mismo cuidado en sentido inverso y copia los ID de 64 bits dígito por dígito, cuando la mayoría de los convertidores los redondean.
JSON y XML pierden cada uno algo propio. JSON no tiene ningún tipo de fecha, así que las fechas viajan como texto y el código que las recibe tiene que saber qué está mirando. El XML de datos lleva solo valores, sin formato, gráficos ni imágenes: justo lo que quiere un feed de importación, y no lo que quieres tú si el objetivo era conservar el libro intacto.
Cuándo un navegador es de verdad la herramienta equivocada
Siete de estas herramientas nunca envían tu archivo a ninguna parte: Excel a CSV, CSV a Excel, CSV a JSON, JSON a CSV, XML a Excel, Excel a XML y PDF a Excel. No se guarda nada, y eso importa cuando el archivo es una nómina o una lista de clientes. Cuatro son distintas: Excel a PDF, ODS a XLSX, XLS a XLSX y XLSX a ODS entregan el archivo a nuestro servidor, porque maquetar una página impresa, o trasladar fuentes, colores, formato condicional y gráficos entre formatos, no es algo que una página web pueda simular. Esos archivos viajan por una conexión cifrada, se convierten y se eliminan en cuanto tu descarga está lista. Si no se puede acceder al servidor, cada una recurre a su propio convertidor, que conserva valores, fórmulas, formatos de número, celdas combinadas y anchos de columna, pero no fuentes, colores ni gráficos, y te avisa de que lo hizo.
Tamaño. Las herramientas que funcionan en el navegador cargan toda la tabla en memoria, así que el límite es la memoria disponible de tu pestaña: van bien hasta decenas de megabytes, se complican pasados los cien y no tienen nada que hacer con una exportación de varios gigabytes. Los convertidores de libros admiten hasta 50 MB por archivo y Excel a PDF hasta 40 MB, y ambos lo avisan antes de convertir, no después. Una hoja de Excel en sí llega hasta 1,048,576 filas, un límite del formato y no nuestro; CSV a Excel continúa en hojas adicionales con el encabezado repetido en lugar de cortar tus datos sin avisar.
Trabajo de datos de verdad. Un convertidor no es una base de datos. Unir dos tablas, quitar duplicados, agregar, filtrar diez millones de filas o analizar una exportación desordenada son trabajos para herramientas hechas para eso, y las gratuitas son muy buenas: csvkit para operaciones rápidas con CSV desde la línea de comandos, Miller para lo mismo con JSON y CSV a la vez, qsv para ir rápido con archivos enormes, DuckDB para ejecutar SQL de verdad directamente sobre un archivo CSV o Parquet, y pandas si ya trabajas en Python.
Macros y cualquier cosa que se ejecute. VBA no se puede trasladar a .xlsx, que sencillamente no tiene dónde guardarlo, y tampoco se traslada a .ods, porque LibreOffice solo ejecuta una parte de VBA y las diferencias aparecerían como números incorrectos en lugar de como errores. Si un libro depende de sus macros, guarda el original junto a la copia convertida. A los archivos protegidos con contraseña hay que quitarles primero la contraseña, en el mismo programa que la puso.
Automatización. Estas herramientas funcionan cuando una persona hace clic. Convertir un feed cada noche es un trabajo para la línea de comandos: LibreOffice en modo headless maneja todos los formatos de esta página.
Cómo elegir entre herramientas que suenan parecido
Excel a CSV o Excel a XML. Las dos leen un libro y escriben un archivo de datos plano, y lo que decide es el destino. El CSV va a hojas de cálculo, bases de datos y cualquier cosa que diga “sube un CSV”. El XML va a importaciones e integraciones que especifican nombres de elementos: tú defines el nombre de la raíz y de las filas, los encabezados se convierten en nombres de elementos y los valores salen como números simples y fechas ISO. Excel a XML también puede escribir XML Spreadsheet 2003, que es algo completamente distinto: un formato que Excel vuelve a abrir como libro, para cuando un sistema pide “Excel XML” y no tu propio XML de datos.
CSV a Excel o CSV a JSON. El mismo analizador, la misma detección de tipos por columna, distinto resultado. CSV a Excel produce un .xlsx con fechas y números reales que puedes sumar y ordenar, y una fila de encabezado fija y con filtros: para personas. CSV a JSON produce un arreglo de objetos, un arreglo de arreglos, un objeto con claves o JSON Lines: para código. Si la respuesta es “las dos cosas”, convierte a Excel para las personas y a JSON para el flujo de datos; coincidirán, porque los tipos de columna se decidieron de la misma manera.
XML a Excel o Excel a XML. No son simplemente direcciones opuestas. XML a Excel primero tiene que encontrar la tabla: busca elementos que se repiten bajo el mismo padre —cada <book> de un catálogo, cada <item> de un feed RSS—, puntúa cada grupo y deja el resto a un clic, y luego aplana atributos y elementos anidados en columnas con nombre de ruta. Excel a XML no tiene nada que buscar, porque tus filas ya son los registros.
XLS a XLSX o CSV a Excel. Las dos terminan en un libro moderno. XLS a XLSX actualiza un archivo binario real de Excel 97–2003 y conserva todo lo que contiene: hojas, fórmulas, formato, gráficos. CSV a Excel construye un libro a partir de texto sin formato que nunca tuvo nada de eso. El punto en común es el caso intermedio más molesto: muchas aplicaciones web exportan una tabla HTML o un archivo XML y le ponen .xls. XLS a XLSX los reconoce por lo que realmente son y guarda un libro auténtico.
PDF a Excel o Excel a PDF. Direcciones opuestas, y solo una de ellas es fiable. Excel a PDF es un trabajo de maquetación: el libro ya conoce su área de impresión, sus saltos de página y su formato, y el convertidor los dibuja. PDF a Excel es la dirección difícil, porque un PDF registra dónde se pintó cada carácter y nada sobre a qué celda pertenecía: las columnas se deducen por la posición. Funciona bien con tablas limpias y con líneas, necesita retoques donde hay celdas combinadas o texto que ocupa varias líneas, recrea valores pero no formato ni fórmulas, y pone cada página del PDF en su propia hoja. Si el libro original todavía existe, pídelo.
ODS a XLSX o Excel a CSV para un archivo .ods. Excel a CSV abre un .ods sin problema y te da los valores. ODS a XLSX conserva el libro como libro, con sus fórmulas, su formato y sus gráficos. Usa el convertidor cuando alguien necesite trabajar en el archivo, y la vía del CSV cuando un sistema necesite sacar los números.