Coluna Excel dividida com XML dentro

5

Existe uma maneira de quebrar uma coluna do Excel contendo XML em várias colunas como esta:

ANTES

| Apples | Pears | XML                              |
| ------ | ----- | ---------------------------------|
| 35     | 18    | <Plums>34</Plums><Figs>19</Figs> |
| 86     | 55    | <Plums>12</Plums><Figs>62</Figs> |
| 99     | 12    | <Plums>18</Plums><Figs>23</Figs> |

DEPOIS DE

| Apples | Pears | Plums | Figs |
| ------ | ----- | ----- | ---- |
| 35     | 18    | 34    | 19   |
| 86     | 55    | 12    | 62   |
| 99     | 12    | 18    | 23   |

A tabela original vem de um SQL Server que armazena XML em uma coluna de texto. Se a coluna XML contivesse valores separados por vírgulas, eu diria ao Excel para fazer Text to Columns. Existe um recurso semelhante para XML?

Mihai Nagy
fonte

Respostas:

4

Além da manipulação de texto no Excel, há duas outras opções.

  1. Você poderia usar o VBA para analisar o XML. Você poderia usar funções de string para procurar por tags ou realmente usar analisadores XML para percorrer o conteúdo (veja essa questão em SO para mais informações).

  2. Você pode usar o recurso Fonte XML no Excel (veja aqui para obter uma visão geral ). A maneira mais fácil de usar isso é carregar em um arquivo XML. O Excel tentará automaticamente criar um mapa XML para os dados carregados e carregá-lo em uma tabela. Para que realmente funcione bem, você precisa criar um esquema.

Para seus dados, adicionei um elemento raiz e salvei isso em um arquivo:

<Fruits>
    <Plums>34</Plums><Figs>19</Figs>
    <Plums>12</Plums><Figs>62</Figs>
    <Plums>18</Plums><Figs>23</Figs>
</Fruits>

Carregado no Excel isso cria a seguinte tabela:

insira a descrição da imagem aqui

Brad Patton
fonte
1

Dado que o material que você não quer é do mesmo tamanho (pelo menos no exemplo), use texto para colunas com 'Largura Fixa'

James Jenkins
fonte
Obrigado pnuts e James . Suas soluções podem funcionar, mas elas são baseadas no tratamento do código XML como uma cadeia de caracteres, não como uma estrutura lógica. Como o Excel é compatível com XML, achei que havia uma solução mais elegante. E não, a largura constante não é garantida.
Mihai Nagy