将 XML 文件导入 Excel

将 XML 文件导入 Excel

我有一个多级 XML 文件。当我将 XML 导入 Excel 时,它会为多级数据创建多个列。但是,我需要将多级数据作为附加行。

有什么方法可以实现这个吗?非常感谢您的帮助。

我的 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>

Excel 如何转换它以及我如何需要它: Excel 导入图像

答案1

我对 XML 不是很了解,但看起来你的源数据出现了问题,它不是按行构建的;而是以大量列的集合构建的。

通常最好的选择是将其转换为数据透视表,但由于数据会创建重复列,因此数据透视表不起作用。您可以创建辅助列,但我无法想象如果没有宏,什么能让您获得所需的表结构。

因此看起来您需要重组数据,以便每个项目实际上作为不同的项目存在。

以下是代码的精简示例。请注意,每个条目都存储在其自己的部分中,并且诸如 TypeID、Rate 甚至状态之类的内容都已转换为该项目的属性:

<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>

导入 Excel 后数据如下所示:

XML 导入

答案2

这个问题的答案是,在将 XML 文件导入 Excel 之前,实际上要对其进行修改。要修改 XML 文件,您需要编写 XSL 代码并转换 XML 以减少层次结构。

这里有更多详细信息以及对我有用的解决方案:

https://stackoverflow.com/questions/23887293/xslt-for-converting-xml-nodename-into-a-node-value

相关内容