次のスキーマがあります。
<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には、これを簡単に制御するための組み込み関数がありますか?
XML ファイルの要素をループ処理し、必要な方法でマップする VBA マクロを作成しましたが、プロセッサに非常に負荷がかかります。私が今日やっていることよりも良い方法があるかどうかを探しているだけです。