Converter XML em Excel
Transforme exportações, feeds e arquivos de dados em XML em uma planilha Excel formatada — os registros repetidos são detectados para você, atributos e elementos aninhados viram colunas, e nada fica armazenado.
- Nunca armazenado
- Sem fila, sem espera
- Sem cadastro, sem marca d'água
Como funciona
Adicione o XML
Solte um arquivo .xml ou cole o XML. Arquivos XML Spreadsheet 2003 do próprio Excel também funcionam.
Escolha os registros
O elemento que se repete — produto, item, linha — é escolhido para você, com todas as outras tabelas do arquivo listadas e uma pré-visualização ao vivo.
Baixe
Um .xlsx com números e datas tipados por coluna e uma linha de cabeçalho em negrito, com filtro.
Encontrando as linhas dentro de uma árvore
O XML não tem o conceito de tabela, então a primeira coisa a fazer é identificar quais elementos são os registros. O sinal confiável é a repetição: um elemento pai com muitos filhos de mesmo nome quase sempre indica uma lista de registros, e os elementos filhos e atributos desses filhos viram as colunas. Isso funciona na imensa maioria dos XML de dados — exportações, feeds, respostas de API, dumps de configuração — porque todos são construídos do mesmo jeito.
Tanto atributos quanto elementos filhos viram colunas, e isso é necessário porque o XML oferece duas formas de dizer a mesma coisa e cada sistema escolhe uma. Uma exportação grava id="42" como atributo; outra grava <id>42</id> como elemento; uma terceira faz as duas coisas no mesmo documento. Uma grade não liga para essa distinção, e você também não deveria, então os dois chegam como colunas, com os atributos marcados para que um nome que aparece nas duas formas não entre em conflito.
Aninhamentos com mais de um nível são achatados juntando os nomes dos elementos, do mesmo jeito que no JSON aninhado. Quando um registro contém um filho repetido — três linhas de pedido dentro de um pedido — uma grade não consegue representá-lo como linhas sem duplicar tudo ao redor, então os valores repetidos ficam na sua célula. Os namespaces são removidos dos nomes das colunas, porque uma coluna chamada ns2:customerName não ajuda ninguém em uma planilha, enquanto os valores em si ficam intactos.
XML de texto corrido não tem tabela para encontrar e converte mal. Uma página XHTML, um artigo DocBook, um capítulo de ePub ou um desenho SVG é um documento, e não um conjunto de dados: a estrutura é aninhada e irregular por natureza, e não há registro repetido para montar linhas. A conversão vai produzir alguma coisa, e essa coisa não vai ser útil. Esta página é para XML de dados, e ter clareza sobre essa diferença economiza mais tempo do que qualquer ajuste fino.
Quando você precisa de outra coisa
Quando você conhece a estrutura, extraia os dados de forma deliberada em vez de deixar que ela seja deduzida. xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml puxa exatamente os campos que você quer com uma expressão XPath, e o xq faz o mesmo com sintaxe no estilo do jq. Essa é a diferença entre uma conversão que por acaso funciona e uma que você pode colocar em um pipeline.
Para arquivos muito grandes, tudo aqui tem o formato errado: o documento é carregado inteiro na memória, e um XML interpretado como árvore costuma ocupar várias vezes o tamanho do arquivo. Interpretadores em fluxo — o iterparse do Python, ou SAX em qualquer linguagem — percorrem um documento de vários gigabytes com memória constante e são a única abordagem realista a partir de algumas centenas de megabytes.
Perguntas frequentes
Como ele sabe qual parte do XML é a tabela?
Registros são elementos que se repetem sob o mesmo pai — cada <book> dentro de um <catalog>, cada <item> em um canal RSS. Cada grupo recebe uma pontuação pela quantidade de registros e campos que tem, o melhor é escolhido, e os outros ficam a um clique de distância.
O que acontece com atributos e elementos aninhados?
Cada um vira uma coluna com o nome do seu caminho: um atributo id vira id, <author><name> vira author/name, e <price currency="EUR"> gera price e price/@currency. Um campo que se repete dentro de um mesmo registro é juntado em uma só célula ou distribuído em colunas numeradas.
Ele abre arquivos Excel XML Spreadsheet 2003?
Sim. Esses arquivos são reconhecidos e convertidos aba por aba, com números, datas e texto intactos.
E se o arquivo tiver várias tabelas — pedidos e seus itens?
Cada grupo repetido é oferecido separadamente. Uma tabela aninhada, como os itens de cada pedido, traz uma coluna que identifica o registro pai, para que as duas abas possam ser relacionadas.
Meu arquivo fica armazenado em algum lugar?
Não. O XML é interpretado e a planilha é gerada aqui, sem nada ficar armazenado.
É seguro abrir XML de origem desconhecida?
Sim. O arquivo é lido pelo interpretador de XML do seu navegador, que nunca carrega entidades externas nem DTDs e não consegue executar nada que esteja dentro do arquivo.
Bom saber: Documentos que são texto corrido e não dados — páginas XHTML, artigos DocBook — não têm tabela para encontrar e ficam ruins na conversão. Arquivos acima de uns 100 MB podem passar do limite de memória do seu navegador.
Coloque esta ferramenta no seu site
Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.
Mais Ferramentas de planilhas
Excel para XML
Linhas em XML limpo e bem formado
JSON para CSV
JSON aninhado achatado em colunas limpas
CSV para Excel
CSV em XLSX com números e datas de verdade
CSV para JSON
CSV em JSON tipado e aninhado
Excel para CSV
Qualquer aba em CSV, na codificação que você precisa
ODS para XLSX
Planilhas do LibreOffice como pastas de trabalho do Excel