Excel a Markdown: de cuadrícula de hoja de cálculo a tablas de tubería
Copiar y pegar un rango de Excel en un archivo Markdown casi funciona — hasta que la hoja tiene celdas combinadas, columnas de fórmulas anchas o tres hojas en lugar de una. La tabla de texto plano que obtienes es legible en el bloc de notas, pero se rompe al pegarla en GitHub, Obsidian o un wiki, porque el conversor no entendió la estructura.
Este artículo explica qué hace realmente una conversión xlsx → Markdown: cómo conservar cada hoja de cálculo, expandir rangos combinados en celdas honestas, preservar fechas y números como los muestra Excel y terminar con tablas de tubería GFM que se renderizan en todas partes. Todo lo descrito corre en tu navegador — sin subida, sin cuenta, sin servidor tocando tu libro.
La hoja de cálculo y la tabla Markdown no son lo mismo
Un libro xlsx es un ZIP de XML. Dentro viven varias hojas de cálculo, cada una una cuadrícula rectangular de celdas. Una celda puede estar vacía, contener una cadena, una fecha guardada como número de serie, una fórmula o un valor con formato como $1.240,50. Rangos de celdas pueden combinarse en una sola celda visible. Toda la estructura tiene diseño, fórmulas y metadatos de visualización que las tablas Markdown simplemente no tienen espacio para.
Una tabla de tubería Markdown — la forma GFM que GitHub, Obsidian y la mayoría de los wikis renderizan — tiene dos filas de metadatos seguidas de una fila por cada fila de datos, todas con el mismo número de columnas. Sin celdas combinadas, sin fórmulas, sin diseño. El trabajo del conversor fiel es traducir entre estos dos mundos: aplanar la cuadrícula en filas y hacer que cada celda contenga el valor que Excel mostraría en pantalla.
Exportar cada hoja, no solo la primera
La mayoría de las herramientas rápidas exportan solo la hoja activa, dejando en silencio el resto del libro. Una conversión real debe iterar por cada hoja de cálculo, saltar las que están completamente vacías y emitir cada una como su propia tabla Markdown — con el nombre de la hoja como encabezado de nivel 2 encima. Así tu libro aterriza como un solo documento Markdown que aún refleja la estructura original.
En este sitio el valor predeterminado es "todas las hojas", pero también puedes elegir "solo la primera hoja" desde las opciones de hojas de cálculo cuando quieras solo una. Las hojas vacías y las que no contienen nada más que encabezados se filtran automáticamente para no generar un h2 roto sin tabla debajo.
Celdas combinadas: el problema invisible
Las celdas combinadas son la mayor razón por la que copiar y pegar produce tablas rotas. Cuando Excel combina A1:D1 en una sola celda visible, la cuadrícula subyacente aún tiene cuatro celdas — solo A1 contiene el valor, B1 a D1 están vacías. Un conversor ingenuo o simple produce cuatro columnas, tres de ellas en blanco, lo que rompe el conteo de filas y genera una tabla que ningún parser Markdown renderizará correctamente.
La solución se llama expansión: SheetJS nos indica cada rango combinado en el libro antes de construir la tabla. Copiamos el valor de la esquina superior izquierda de cada celda combinada a todas las demás celdas de ese rango, así la cuadrícula que alimentamos a Pandoc no tiene huecos. La tabla de tubería resultante tiene el mismo conteo de celdas que la cuadrícula visible de Excel, cada fila se alinea y la tabla se renderiza limpia.
Fechas, monedas y números: mostrar lo que Excel muestra
Excel almacena las fechas como números de serie — 46095 significa 15 de enero de 2026. Los valores numéricos sin procesar así son inútiles en Markdown, pero un conversor que reformatifica con reglas arbitrarias equivocará las fechas (¿esa celda es 1/2 o 2/1?). La única fuente confiable es el texto que Excel mismo muestra, el cual SheetJS lee directamente con la opción raw:false.
Monedas, porcentajes, decimales, separadores de miles — todo pasa como el texto que ves en la barra de fórmulas. 1.240,50 permanece 1.240,50, 0,12 se queda como 12% si Excel lo mostró así, y 15/1/26 permanece exactamente eso en lugar de ser reformatificado silenciosamente a 2026-01-15.
Fórmulas versus valores
Las celdas de Excel pueden contener una fórmula (=SUMA(A1:A10)) o su valor calculado (1240,50). Las tablas Markdown solo pueden contener valores. Algunos conversores intentan preservar la sintaxis de la fórmula, lo que rara vez es útil fuera de Excel. Leemos el valor calculado — el número o texto que Excel mostraría después de evaluar la fórmula — y emitimos ese. Si necesitas las fórmulas mismas, exporta primero el libro a CSV; este conversor es para el resultado legible, no para el cálculo.
Tablas anchas y qué hacer con ellas
Una hoja de cálculo con quince columnas convierte sin problemas — Pandoc emite una tabla de tubería perfectamente válida. Si se ve bien depende de dónde la leas. La mayoría de los renderizadores Markdown envuelven las tablas de tubería naturalmente; Obsidian, GitHub y Hugo manejan bien los anchos. Para destinos que no lo hacen, divide el libro en hojas más estrechas antes de convertir, o acepta que una tabla ancha es la representación honesta y deja que el renderizador despliegue horizontalmente.
Lo que no hacemos es eliminar columnas silenciosamente o colapsar los datos. La tabla que sale es exactamente la cuadrícula que estaba en el libro — sin sorpresas, sin columnas faltantes.
Por qué dos motores: SheetJS lee, Pandoc formatea
Este sitio usa SheetJS Community Edition para el parseo del libro, luego entrega la tabla HTML resultante a Pandoc para que emita Markdown (GFM). SheetJS maneja los detalles internos difíciles de Excel — rangos combinados, series de fechas, formatos de visualización, el propio paquete ZIP. Pandoc maneja los detalles de dialectos Markdown — sintaxis de tabla de tubería, pistas de alineación y la conformidad final con CommonMark.
Ejecutar ambos en el navegador significa que nada toca un servidor. La librería SheetJS solo se descarga cuando realmente sueltas un archivo xlsx, y Pandoc ya reside en la pestaña desde tu primer uso del conversor. El tiempo total de extremo a extremo en un libro típico de varias hojas es inferior a diez segundos.