Importando um arquivo XML para o excel

1

Eu tenho um arquivo XML multinível. Quando eu importo o XML para o Excel, ele cria várias colunas para os dados multiníveis. No entanto, preciso dos dados multiníveis como linhas adicionais.

Existe alguma maneira de conseguir isso? Muito obrigado pela sua ajuda.

Meu arquivo XML:

<L1>
    <L1dataId>07320</L1dataId>
    <DateDetail>13-Oct-2013</DateDetail>
    <TypeDetail>
        <TypeId>1</TypeId>
        <Rate1>
            <Current>
                <onsite>100</onsite>
                <net>100</net>
                <gross>100</gross>
            </Current>
            <Past>
                <onsite>100</onsite>
                <net>100</net>
                <gross>100</gross>
            </Past>
        </Rate1>
        <Rate2>
            <Current>
                <onsite>2100</onsite>
                <net>2100</net>
                <gross>2100</gross>
            </Current>
            <Past>
                <onsite>2100</onsite>
                <net>2200</net>
                <gross>1200</gross>
            </Past>
        </Rate2>
        <Rate3>
            <Current>
                <onsite>300</onsite>
                <net>300</net>
                <gross>300</gross>
            </Current>
            <Past>
                <onsite>400</onsite>
                <net>400</net>
                <gross>400</gross>
            </Past>
        </Rate3>
    </TypeDetail>
    <TypeDetail>
        <TypeId>2</TypeId>
        <Rate1>
            <Current>
                <onsite>100</onsite>
                <net>100</net>
                <gross>100</gross>
            </Current>
            <Past>
                <onsite>100</onsite>
                <net>100</net>
                <gross>100</gross>
            </Past>
        </Rate1>
        <Rate2>
            <Current>
                <onsite>2100</onsite>
                <net>2100</net>
                <gross>2100</gross>
            </Current>
            <Past>
                <onsite>2100</onsite>
                <net>2200</net>
                <gross>1200</gross>
            </Past>
        </Rate2>
        <Rate3>
            <Current>
                <onsite>300</onsite>
                <net>300</net>
                <gross>300</gross>
            </Current>
            <Past>
                <onsite>400</onsite>
                <net>400</net>
                <gross>400</gross>
            </Past>
        </Rate3>
    </TypeDetail>
</L1>

Como o Excel converte e como eu preciso:

    
por Sudhee 27.05.2014 / 11:08

2 respostas

2

Não estou muito entusiasmado com XML, mas parece que você está tendo problemas com seus dados de origem, não está estruturado em linhas; em vez disso, ele é estruturado como uma enorme coleção de colunas.

A melhor opção usual seria convertê-lo em uma tabela dinâmica, mas como os dados criam colunas duplicadas, uma tabela dinâmica não funcionaria. Você pode criar colunas auxiliares, mas não consigo imaginar o que poderia obter a estrutura da tabela desejada sem uma macro.

Parece que você precisará reestruturar seus dados para que cada item realmente exista como um item distinto.

Aqui está uma amostra reduzida do código. Observe que cada entrada é armazenada em sua própria seção e itens como TypeID, Rate e até mesmo o estado foram convertidos em atributos desse item:

<L1>
<L1dataId>07320</L1dataId>
<DateDetail>13-Oct-2013</DateDetail>

<Detail>
    <TypeId>1</TypeId>
    <RateID>1</RateID>
    <State>Current</State>
    <onsite>100</onsite>
    <net>100</net>
    <gross>100</gross>
</Detail>

<Detail>
    <TypeId>1</TypeId>
    <RateID>1</RateID>
    <State>Past</State>
    <onsite>100</onsite>
    <net>100</net>
    <gross>100</gross>
</Detail>  

</L1>

Quando importados para o excel, os dados ficam assim:

    
por 27.05.2014 / 17:28
1

A resposta para essa pergunta foi realmente alterar o arquivo XML antes que ele seja importado para o excel. Para alterar o arquivo XML, você precisará codificar o XSL e converter o XML para reduzir a hierarquia.

Mais detalhes aqui e as soluções que funcionaram para mim:

link

    
por 28.05.2014 / 10:23