使用重复元素将XML导入Excel

时间:2013-10-11 17:37:00

标签: xml excel xml-parsing xsd

我有以下架构:

<xs:element name="response">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="transaction" maxOccurs="unbounded" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:string" name="id_number"/>
            <xs:element type="xs:string" name="first_name"/>
            <xs:element type="xs:string" name="last_name"/>
            <xs:element type="xs:string" name="email"/>
            <xs:element name="custom_field" maxOccurs="unbounded" minOccurs="0">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute type="xs:string" name="id" use="optional"/>
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
            <xs:element name="action" maxOccurs="unbounded" minOccurs="1">
              <xs:complexType>
                <xs:sequence>
                  <xs:element type="xs:string" name="amount"/>
                  <xs:element type="xs:string" name="action_type"/>
                  <xs:element type="xs:string" name="date"/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

当我按照此架构导入XML文件时,Excel将按如下方式布置数据:

http://i.stack.imgur.com/J6LgP.png

我希望将值映射为以下代码:

http://i.stack.imgur.com/Lf7kn.png

注意行数是如何由action元素的数量决定的,而custom_field元素是映射到单独的列而不是行。

Excel有一些内置功能可以轻松控制吗?

我已经编写了VBA宏来循环遍历XML文件的元素并按照我想要的方式映射它,但它是处理器密集型的。我只是想看看有没有比我现在做的更好的方法。

0 个答案:

没有答案