XML de NF-e (e de outras exportações) para Excel
O Excel importa XML, e em arquivos planos se sai razoavelmente. O problema começa onde um registro contém uma lista: a nota fiscal é o exemplo perfeito — uma nota com vários itens. É nesse ponto que os totais começam a dobrar, e o erro é quase impossível de ver a olho.
A estrutura de uma NF-e
O XML de uma NF-e (leiaute 4.00) tem, no essencial, um cabeçalho da nota — ide (número, série, data de emissão, natureza da operação), emit (emitente), dest (destinatário) — e uma lista de itens, o elemento det, que se repete uma vez por produto, cada um com o seu prod (código, descrição, NCM, CFOP, quantidade, valor unitário, valor total do item) e os impostos. No fim há os totais (total/ICMSTot, com o valor da nota em vNF) e a chave de acesso de 44 dígitos, no atributo Id de infNFe e no protocolo de autorização.
Uma tabela só pode representar um nível: ou uma linha por nota, ou uma linha por item.

De onde vem a duplicação
Imagine uma nota de R$ 5.000,00 com três itens. A tabela deveria ter uma linha (a nota) ou três (os itens). Quando os dados aninhados são achatados sem cuidado, surge uma terceira opção: três linhas, cada uma repetindo o total da nota.
Isso se chama produto cartesiano. Uma soma sobre essa tabela dá R$ 15.000,00 em vez de R$ 5.000,00. Se as notas têm números diferentes de itens, o erro também é desigual, e você não consegue conferir somando de cabeça.
O pior é que a tabela parece totalmente normal.
A pergunta certa a fazer primeiro
Antes de achatar um XML, decida o que é uma linha. A resposta depende da tarefa e pode mudar de pergunta para pergunta dentro do mesmo arquivo.
Se uma linha é uma nota, a lista de itens tem de ser reduzida (valores unidos ou só contados) ou deixada de fora. Se uma linha é um item, os dados da nota se repetem em cada linha de propósito, e você deve somar o campo do item (vProd), não o da nota (vNF).
Uma ferramenta tem de tornar essa escolha explícita. O Tabulens mostra quais elementos se repetem e quantas vezes, propõe um adequado e diz com clareza quando elementos aninhados que se repetem ficam dentro de uma linha: os valores são unidos com um separador, e uma dica ao lado sugere trocar para esse nível para desdobrá-los.
Passo a passo para os itens de uma nota
- Arraste o arquivo XML da nota para a janela do aplicativo.
- O aplicativo já propõe o nível dos itens, o elemento
prod: uma linha por produto, com as colunascProd,xProd,NCM,CFOP,qCom,vUnComevProd. O namespace da NF-e não atrapalha. Se você preferedetcomo linha (para ter também o atributonItem, que vira a coluna@nItem), escolha-o em Leitura do arquivo. - Os campos da nota — número, emitente, valor total — não se repetem por item e por isso não aparecem nessa tabela. Para levá-los a cada linha, use o botão Níveis: ele abre os itens como tabela vinculada e traz os campos que você marcar (por exemplo
ide/nNF,emit/xNomeetotal/ICMSTot/vNF) em colunas marcadas com ↑. Os valores são lidos do registro pai, não copiados. - Filtre, agrupe (por NCM, por CFOP) e exporte para o Excel: Exportar → Excel (.xlsx).
Um cuidado com códigos: um NCM como 85444200 parece um número, e um NCM que começa com zero (01012100) perderia o zero se a coluna fosse tratada como número. Se isso acontecer com a sua amostra, desligue “Detectar números e datas” em Leitura do arquivo: tudo continua texto.
Várias notas de uma vez
Um mês de notas costuma ser uma pasta com centenas de arquivos XML, um por nota. Quando os arquivos têm a mesma estrutura, a ferramenta Mesclar arquivos os junta em uma única tabela, e aí você agrupa por mês, por emitente ou por produto. Para conferir se as chaves de acesso estão bem formadas, use a validação de valores com o formato “Chave de acesso da NF-e” (veja validar CPF, CNPJ, CEP e chave de NF-e).
Os arquivos do SPED (EFD) são outra coisa: texto com barra vertical como separador, em que cada tipo de registro (|0000|, |C100| e assim por diante) tem colunas diferentes. Eles abrem como CSV com o delimitador |, mas por isso aparecem com linhas irregulares; filtre pelo código do registro para ver um tipo por vez.
Atributos também são dados
Metade das exportações XML guarda valores não no texto dos elementos, mas em atributos: <det nItem="1">. Algumas ferramentas os esquecem e mostram uma tabela vazia com o número certo de linhas.
Os atributos devem virar colunas em pé de igualdade com os elementos aninhados, com uma marca clara para que @id (um atributo) não se confunda com id (um elemento aninhado) quando o documento tem os dois.
Perguntas frequentes
Posso confiar em uma tabela dinâmica montada sobre um XML importado?
Só se você tiver certeza de que o aninhamento não foi achatado em um produto cartesiano. Confira o total geral contra uma nota que você conhece.
Como conto os itens de uma nota?
Abra a tabela no nível dos itens e agrupe pelo número (ou pela chave) da nota com uma medida “contagem”.
Isto substitui o programa emissor ou o portal da NF-e?
Não. Serve para olhar, conferir e levar os dados para uma planilha. A validade da nota — se está autorizada — só a SEFAZ confirma.
O que fazer com aninhamento muito profundo?
Escolha o nível em que estão os dados de que você precisa em vez de achatar tudo de uma vez: você acabaria com centenas de colunas com as quais ninguém consegue trabalhar.
Grátis para uso pessoal. Seu arquivo não é enviado a nenhum servidor. Versão para Windows — 3.5 MB, sem instalação: detalhes. Para organizações — licença.