「XML スプレッドシート 2003 (*.xml)」として保存するときに Excel が生成するものに基づいた XML ドキュメントがあります。
スプレッドシート自体には、ラベルの階層を持つヘッダー セクションが含まれています。
| | ABCDEFGHI --+------------------------------------------------ ----- 1| a1 a2 2| a11 a12 a13 a21 a22 3| a111 a112 a121 a122 a131 a132 a221 a222
この階層はワークブックのすべてのシートに存在し、ほぼどこでも同じように見えます。
Excel XML は、通常の HTML テーブルとまったく同じように機能します。(<row>
を含む<cell>
)。私はすべてをそのようなツリー構造に変換することができました:
<node title="a1" col="1">
<node title="a11" col="1">
<node title="a111" col="1"/>
<node title="a112" col="2"/>
</node>
<node title="a12" col="3">
<node title="a121" col="3" />
<node title="a122" col="4" />
</node>
<!-- and so on -->
</node>
しかし、ここに複雑さがあります:
- 複数のワークシートがあるため、それぞれにツリーがあります
- 階層は各シートでわずかに異なる場合があり、ツリーは等しくありません (たとえば、シート 2 には "a113" があり、他のシートにはありません)。
- ツリーの深さは明示的に制限されていません
- ただし、ラベルはすべてのシートで同じであることを意図しているため、グループ化に使用できます
これらの別々のツリーを次のようなものにマージしたいと思います。
<node title="a1">
<col on="sheet1">1</col>
<col on="sheet2">1</col>
<node title="a11">
<col on="sheet1">1</col>
<col on="sheet2">1</col>
<node title="a111">
<col on="sheet1">1</col>
<col on="sheet2">1</col>
</node>
<node title="a112">
<col on="sheet1">2</col>
<col on="sheet2">2</col>
</node>
<node title="a113"><!-- different here -->
<col on="sheet2">3</col>
</node>
</node>
<node title="a12">
<col on="sheet1">3</col>
<col on="sheet2">4</col>
<node title="a121">
<col on="sheet1">3</col>
<col on="sheet2">4</col>
</node>
<node title="a122">
<col on="sheet1">4</col>
<col on="sheet2">5</col>
</node>
</node>
<!-- and so on -->
</node>
理想的には、Excel XML から 3 つの構造を構築する前に、マージを実行できるようにしたいと考えています (これを開始していただければ、それは素晴らしいことです)。しかし、これをどのように行うのか見当がつかないので、ツリーが構築された後のマージ (つまり、上記の状況) は問題ありません。
御時間ありがとうございます。:)