OOXML:详解Excel工作表(worksheet)
背景
这篇文章是系列文章的第二篇,介绍Excel工作表()是什么,工作表的主要数据的XML格式,以及工作表是怎么和其他组件组成我们常见的Excel表格。
系列文章指北
Excel是什么
详解Excel工作表()
详解Excel共享字符串()
Todo: 详解Excel绘图()
Excel工作表()是什么
工作表(sheet)是Excel包中的一个组件,我们在WPS或者中,打开一个Excel文件,对应的是工作簿(),而一个工作簿是由一个或多个工作表(sheet)组成,工作表(sheet)就是我们看到的主体部分了。
工作表(sheet)是工作簿中的中央结构,是用户执行其电子表格大部分工作的地方。工作表(sheet)最常见的类型是工作表(),它表示为单元格网格。工作表()单元格可以包含文本,数字,日期和公式。单元格也可以格式化。工作簿通常包含多个工作表。为了帮助数据分析和做出明智的决策,电子表格应用程序通常会实现有助于计算,分类,过滤,组织和以图形方式显示信息的功能和对象。
我们主要讲工作表()的结构,因为这是最广泛的sheet。用户操作Excel最终都反应在工作表上,有些操作是直接修改了工作表里行列的数据,有些则和行列数据无关,属于浮动在工作表上的内容(比如绘图()组件,我们常见的图片和各种图表)。这里我们只讲讲工作表的行列数据,至于绘图()组件,后续会有单独的介绍。
xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing"
xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
ref="A1:F13"/>
tabSelected="1" workbookViewId="0">
activeCell="C14" sqref="C14"/>
defaultColWidth="9" defaultRowHeight="14" outlineLevelCol="5"/>
min="1" max="1" width="4.5625" customWidth="1"/>
min="2" max="2" width="10.9296875" customWidth="1"/>
min="3" max="3" width="10.546875" customWidth="1"/>
min="4" max="4" width="11.71875" customWidth="1"/>
min="6" max="6" width="4.5546875" customWidth="1"/>
r="1" ht="40" customHeight="1" spans="1:6">
r="A1" s="2" t="s">
0
r="B1" s="3"/>
r="C1" s="3"/>
r="D1" s="3"/>
r="E1" s="3"/>
r="F1" s="3"/>
r="2" s="1" customFormat="1" ht="22" customHeight="1" spans="1:6">
r="A2" s="4" t="s">
1
r="B2" s="4" t="s">
2
r="C2" s="4" t="s">
3
r="D2" s="4" t="s">
4
r="E2" s="9" t="s">
5
r="F2" s="9"/>
......
count="9">
ref="A1:F1"/>
ref="E2:F2"/>
......
left="0.75" right="0.75" top="1" bottom="1" header="0.511805555555556" footer="0.511805555555556"/>
r:id="rId1"/>
count="1">
r:id="rId2"/>
工作表()的行列数据
以下提到的文档均为:ISO/IEC 29500-1:2016
defaultColWidth="9" defaultRowHeight="14" outlineLevelCol="5"/>
是工作表格式配置,我们这里看到的是默认列宽度,是默认行高,以及表示Excel 的层数(功能参考)。
其他属性类型可以参考文档的 18.3.1.81 (Sheet )。
cols
示例参考文档的 18.3.1.17 cols ( ) :
min="4" max="4" width="12" bestFit="1" customWidth="1"/>
min="5" max="5" width="9.140625" style="3"/>
cols中标出了对应的列号(min, max),列宽(width),是否自适应列宽(),是否自定义宽度(),已经样式索引(style)。
(row)
r="2" s="1" customFormat="1" ht="22" customHeight="1" spans="1:6">
.......
里的每个row 有以下属性:
r:行号, ht:行高(单位pt), :是否自定义行高, span:列的跨度, s:样式(style)索引,:是否行自定义格式。
(c(cell的缩写))
r="A1" s="2" t="s">
0
里的每个row下,由不同的单元格(cell)填充,这里的例子,单元格只有三个属性:
r (): 索引,s (Style Index): 样式索引,t (Cell Data Type): 单元格数据类型,v (Cell Value): 单元格数据。
注意,这里的单元格是字符串类型,所以值代表的是共享字符串()的索引,而不是字符串本身。
完整请参考文档:18.3.1.4 c (Cell)
和
count="9">
ref="A1:F1"/>
ref="E2:F2"/>
......
是合并单元格的集合,只有一个属性count,表示工作表中合并单元格的数量。
是一个合并单元格,属性中的 ref () 表示的是合并单元格的索引,类型是字符串,表示的是一整块单元格区域。
联系其他组件
这里介绍一些和工作表相关的组件,组件之间的联系,是通过联系组件实现的,如果不了解工作表组件是怎么与其他组件联系,请参考系列文章第一篇Excel是什么的相关内容。
样式(style)组件:
样式组件中,存储的是工作表单元格的格式设置数据。是可以按照顺序索引的列表形势。
下面是示例Excel文件中样式表出现的样式类型,感兴趣的可以参考文档了解,限于篇幅这里不做过多介绍:
18.8.31 ( )
18.8.23 fonts (Fonts)
18.8.21 fills (Fills)
18.8.5 ()
18.8.9 ( )
18.8.10 (Cell )
18.8.8 (Cell )
18.8.42 (Table )
我们要注意的是,并非所有影响单元格样式的设置都在样式组件中,工作簿的主题组件设置,也会影响单元格样式。
下面是示例Excel文件中的样式表(xl/.xml):
xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
count="4">
numFmtId="44"
formatCode="_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)"/>
numFmtId="176" formatCode="_ * #,##0_ ;_ * \-#,##0_ ;_ * "-"_ ;_ @_ "/>
numFmtId="177" formatCode="_ * #,##0.00_ ;_ * \-#,##0.00_ ;_ * "-"??_ ;_ @_ "/>
numFmtId="42"
formatCode="_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_)"/>
count="24">
val="11"/>
theme="1"/>
val="Calibri"/>
val="134"/>
val="minor"/>
val="11"/>
theme="1"/>
val="Calibri"/>
val="134"/>
val="minor"/>
......
count="34">
patternType="none"/>
patternType="gray125"/>
patternType="solid">
theme="0" tint="-0.15"/>
indexed="64"/>
......
共享字符串()组件:
共享字符串是工作簿级别的组件,所有的工作表都依赖共享字符串表里的数据。
参考文档 18.4 Table:
字符串值可以直接存储在电子表格单元格元素中(第18.3.1.4节);但是,将相同的值存储在多个单元格元素中可能会导致工作表组件非常大,从而可能导致性能下降。共享字符串表是在工作簿中共享的字符串值的索引列表,该列表允许实现仅将值存储一次。
下面是示例Excel文件中的共享字符串表(xl/.xml):
xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="36">
Ttitle
A1
B1
C1
D1
......
主题(theme)组件:
是跨OOXML文档类型的共享语言。 当电子表格使用主题时,它包括主题组件,该主题组件包含在文档中。 主题组件包含有关文档主题的信息,例如,配色方案,字体和格式方案。
#Parts to /anat...x.php
详细可以参考文档 14.2.7 Theme Part:
此组件类型的实例包含关于文档主题的信息,主题是颜色方案,字体方案和格式方案(后者也称为效果)的组合。……对于文档,主题的选择会影响单元格内容和图表的颜色和样式等。 ……
通过 Excel设置主题的方式(/en...904)
主题组件属于,是跨OOXML文档的,这里不做展开了。
总结
这篇文章仅作为学习Excel工作表的参考,工作表的结构比较简单,还是比较容易理解的,下一篇将介绍“坑”比较多的共享字符串组件。而如果想要更多的了解工作表,可以查阅下面的参考资料。
参考资料
/
介绍xlsx /anat...x.php
介绍xlsx()内容概述 /SSco...w.php
OOXML维基百科 /wiki/...n_XML
ISO/IEC 29500-1:2016 说明 //...71691.html
ISO/IEC 国际标准文档列表 /ittf....html
ISO/IEC 29500-1:2016 文档地址 /ittf...6.zip
../Row /en-u....8.1
博客地址: