我有一个基于 Excel 在另存为“XML Spreadsheet 2003 (*.xml)”时生成的 XML 文档。
电子表格本身包含一个带有标签层次结构的标题部分:
| ABCDEFGHI -+------------------------------------------------ ----- 1| a1 a2 2| a11 a12 a13 a21 a22 3| a111 a112 a121 a122 a131 a132 a221 a222
此层次结构存在于工作簿中的所有工作表上,并且在任何地方看起来或多或少都相同。
Excel XML 的工作方式与普通的 HTML 表格完全一样。( <row>
s 包含<cell>
s)。我已经能够将所有内容转换为这样的树形结构:
<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 构建三个结构之前进行合并(如果你让我开始这样做,那就太好了)。但是由于我不知道我将如何做到这一点,所以在构建树之后进行合并(即:上述情况)就可以了。
谢谢你的时间。:)