表格软件的的层次结构一般都比较简单,整个文件是一个Workbook节点,Workbook中可以包含多个Worksheet,Worksheet有多个Row对象,每个Row包含多个Cell.
Workbook
Worksheet
Row
Cell
Cell
...
Row
...
Worksheet
...
Excel基本上也是这种结构层次,唯一的区别是在Row对象并不是直接被包含在Worksheet中,而是包含在一个Table节点下,而Table则包含在Worksheet中,而且Worksheet只能有一个Table对象。估计这种设计是为了方便与其它文档如Word公用Table元素。
Workbook中不但有Worksheet,还有一个Styles字节点。Styles中是一些Style节点,用于保存单元格的属性,如字体信息,边框,对其,背景填充等。Style有一个styleID属性,单元格就通过一个styleID字符串引用相应的Style.只有单元格的属性会被保存在Styles,其它对象如Row,有一个RowHeight属性,就只是简单的作为Row对象的一个属性,而不会使用一个单独的Style节点。
一个相当简单的Excel文件大致结构如下:
<Workbook>
<Styles>
<Style ss:ID="s1">
<Font ss:Bold="1" .../>
</Style>
</Style>
<Worksheet>
<Table>
<Row ss:Height="100">
<Cell>
<Data ss:Type="Number">3</Data>
</Cell>
</Row>
...
</Table>
</Worksheet>
...
</Workbook>
至于其它的对象,如图标,图片,List等等,Excel2003的Xml格式目前都还不能支持,从某种意义上说,Excel的Xml文件格式要比Openoffice的Xml文件格式差一个档次。