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

博客地址:

你可能想看:
分享给朋友: