我有以下架构:
<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 会按如下方式排列数据:
我更喜欢值映射如下:
请注意行数是如何由操作元素的数量决定的,而 custom_field 元素映射到单独的列而不是行。
Excel 是否有一些内置函数可以轻松控制这一点?
我已经编写了 VBA 宏来循环遍历 XML 文件的元素并按照我想要的方式映射它,但是它非常占用处理器资源。我只是想看看是否有比我今天所做的更好的方法。