Convertir XML a Excel
Convierte exportaciones XML, feeds y archivos de datos en una hoja de Excel con formato: los registros repetidos se detectan solos, los atributos y elementos anidados se ordenan en columnas, y no se guarda nada.
- Nunca se guarda
- Sin filas ni esperas
- Sin registro, sin marca de agua
Cómo funciona
Agrega el XML
Suelta un archivo .xml o pega el XML. También funcionan los archivos XML Spreadsheet 2003 del propio Excel.
Elige los registros
El elemento que se repite (product, item, row) se elige por ti, con todas las demás tablas del archivo en una lista y una vista previa en vivo.
Descarga
Un .xlsx con números y fechas reconocidos por columna y una fila de encabezado en negrita y con filtros.
Encontrar las filas dentro de un árbol
XML no tiene el concepto de tabla, así que lo primero es identificar qué elementos son los registros. La señal fiable es la repetición: un elemento padre con muchos hijos del mismo nombre casi siempre indica una lista de registros, y los elementos hijos y atributos de esos hijos se convierten en las columnas. Esto funciona con la inmensa mayoría del XML de datos (exportaciones, feeds, respuestas de API, volcados de configuración) porque todos están construidos de la misma manera.
Tanto los atributos como los elementos hijos se convierten en columnas, y eso es necesario porque XML ofrece dos formas de decir lo mismo y cada sistema elige la suya. Una exportación escribe id="42" como atributo; otra escribe <id>42</id> como elemento; una tercera hace ambas cosas en el mismo documento. A una cuadrícula no le importa la diferencia y a ti tampoco debería, así que ambos llegan como columnas, con los atributos marcados para que un nombre que aparece en las dos formas no choque.
El anidamiento de más de un nivel se aplana uniendo los nombres de los elementos, igual que con el JSON anidado. Cuando un registro contiene un hijo repetido (tres líneas de pedido dentro de un pedido), una cuadrícula no puede representarlo como filas sin duplicar todo lo que lo rodea, así que los valores repetidos se conservan en su celda. Los espacios de nombres se eliminan de los nombres de las columnas, porque una columna llamada ns2:customerName no le sirve a nadie en una hoja de cálculo, mientras que los valores en sí no se tocan.
El XML de prosa no tiene una tabla que encontrar y se convierte mal. Una página XHTML, un artículo DocBook, un capítulo de ePub o un dibujo SVG son documentos y no conjuntos de datos: su estructura es anidada e irregular por diseño, y no hay ningún registro repetido con el que construir filas. La conversión producirá algo, y ese algo no será útil. Esta página es para XML de datos, y tener clara la diferencia ahorra más tiempo que cualquier ajuste.
Si buscas otra cosa
Cuando conoces la estructura, extráela a propósito en lugar de deducirla. xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml saca exactamente los campos que quieres con una expresión XPath, y xq hace lo mismo con una sintaxis al estilo de jq. Esa es la diferencia entre una conversión que funciona por casualidad y una que puedes meter en un pipeline.
Para archivos muy grandes, todo lo de aquí tiene la forma equivocada: el documento se analiza entero en memoria, y un XML analizado como árbol suele ocupar varias veces el tamaño del archivo. Los analizadores en streaming, como iterparse de Python o SAX en cualquier lenguaje, recorren un documento de varios gigabytes con memoria constante, y son el único enfoque realista pasados unos cientos de megabytes.
Preguntas frecuentes
¿Cómo sabe qué parte del XML es la tabla?
Los registros son elementos que se repiten bajo el mismo padre: cada <book> dentro de un <catalog>, cada <item> dentro de un canal RSS. Cada grupo recibe una puntuación según cuántos registros y campos tiene, se elige el mejor y los demás quedan a un clic.
¿Qué pasa con los atributos y los elementos anidados?
Cada uno se convierte en una columna que lleva el nombre de su ruta: un atributo id se convierte en id, <author><name> se convierte en author/name y <price currency="EUR"> da price y price/@currency. Un campo que se repite dentro de un mismo registro se une en una sola celda o se reparte en columnas numeradas.
¿Puede abrir archivos XML Spreadsheet 2003 de Excel?
Sí. Esos archivos se reconocen y se convierten hoja por hoja, con sus números, fechas y texto intactos.
¿Y si el archivo contiene varias tablas, por ejemplo pedidos y sus artículos?
Cada grupo repetido se ofrece por separado. Una tabla anidada, como los artículos de cada pedido, lleva una columna que identifica su registro padre para poder relacionar las dos hojas.
¿Se guarda mi archivo en algún lugar?
No. El XML se analiza y el libro se genera aquí, sin que se guarde nada.
¿Es seguro abrir un XML de origen desconocido?
Sí. El archivo lo lee el analizador XML de tu navegador, que nunca carga entidades externas ni DTD y no puede ejecutar nada de lo que contenga el archivo.
Conviene saber: Los documentos que son prosa y no datos, como páginas XHTML o artículos DocBook, no tienen una tabla que encontrar y se convierten mal. Los archivos de más de unos 100 MB pueden superar la memoria de tu navegador.
Agrega esta herramienta a tu sitio web
Gratis para cualquier blog, página de clase o artículo de ayuda. Pega un fragmento de código y tus visitantes podrán usarla directamente en tu página.
Más Herramientas de hojas de cálculo
Excel a XML
Filas convertidas en XML limpio y bien formado
JSON a CSV
JSON anidado aplanado en columnas limpias
CSV a Excel
CSV a XLSX con números y fechas reales
CSV a JSON
CSV a JSON con tipos y estructura anidada
Excel a CSV
Cualquier hoja a CSV, con la codificación que necesitas
ODS a XLSX
Hojas de cálculo de LibreOffice como libros de Excel