2

我有以下架构:

<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

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

Excel 是否有一些内置函数可以轻松控制这一点?

我已经编写了 VBA 宏来循环遍历 XML 文件的元素并按照我想要的方式映射它,但是它非常占用处理器资源。我只是想看看是否有比我今天所做的更好的方法。

4

0 回答 0