Simon 's Blog
» 做笔记做笔记
Toggle navigation
Simon 's Blog
HOME
总裁介绍
coper
zongcai
what
ARCH
TAGS
navigation
!!! XLSX文件剖析
? SpreadsheetML ?
2021-09-12 20:03:16
75
0
0
simon88
? SpreadsheetML ?
[TOC] # 封装结构 SpreadsheetML 或 .xlsx 文件是一个 zip 文件(一个包),其中包含许多“部分”(通常是 UTF-8 或 UTF-16 编码)或 XML 文件。该包还可能包含其他媒体文件,例如图像。该结构是根据 OOXML 标准 ECMA-376 的第 2 部分中概述的开放打包约定组织的。 您只需解压缩 .xlsx 文件即可查看文件结构和组成 SpreadsheetML 文件的文件。  部分的数量和类型将根据电子表格中的内容而有所不同,但总会有一个 [Content_Types].xml、一个或多个关系部分、一个工作簿部分和至少一个工作表。电子表格的核心数据包含在工作表部分中,在[xsxl 内容概述](http://officeopenxml.com/SScontentOverview.php)中有更详细的讨论。 # 内容类型 每个包都必须有一个 [Content_Types].xml,位于包的根目录。此文件包含包中部件的所有内容类型的列表。每个部分及其类型都必须在 [Content_Types].xml 中列出。以下是主要内容部分的内容类型: <Override PartName="/xl/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/> 在向包中添加新部件时,请务必牢记这一点。 # 关系 每个包都包含一个关系部分,该部分定义了其他部分之间的关系以及与包外资源的关系。这将关系与内容分开,并且可以轻松更改关系,而无需更改引用目标的源。  对于 OOXML 包,_rels 文件夹中始终有一个关系部分 (.rels),用于标识包的起始部分或包关系。例如,以下内容定义了内容的开始部分的标识: <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>。 app.xml 和 core.xml 的 .rels 中通常也有关系。 除了包的关系部分之外,作为一个或多个关系来源的每个部分都将拥有自己的关系部分。每个这样的关系部分都可以在该部分的 _rels 子文件夹中找到,并通过将“.rels”附加到该部分的名称来命名。 通常,主要内容部分 (workbook.xml) 有自己的关系部分 (workbook.xml.rels)。它将包含与内容其他部分的关系,例如 sheet1.xml、sharedStrings.xml、styles.xml、theme1、xml,以及外部链接的 URI。  关系可以是显式的,也可以是隐式的。对于显式关系,使用`<Relationship>`元素的`Id`属性引用资源 。即, `Id`在源直接映射到`Id`的关系的项目,与显式引用到目标。 例如,工作表可能包含如下超链接: <w:hyperlink ref="A11" r:id="rId4"> 在R:ID =“rId4”引用关系的一部分工作表(worksheet1.xml.rels)内的下列关系。 <Relationship Id="rId4" Type="http://. . ./hyperlink" Target="http://www.google.com/" TargetMode="External"/> 对于隐式关系,没有对`<Relationship>` `Id 的`直接引用。相反,参考被理解。 # 特定于 SpreadsheetML 文档的部分 下面列出了特定于 SpreadsheetML 电子表格的 SpreadsheetML 包的可能部分。请记住,电子表格可能只有其中的几个部分。例如,如果电子表格没有数据透视表,则数据透视表部件将不包含在包中。 | 部分 | 描述 | | ---------------------------- | ------------------------------------------------------------ | | Calculation Chain | 从公式计算单元格的值时,计算顺序可能受计算值的顺序影响。这部分包含指定的排序。一个包只能包含一个这样的部分。 | | Chartsheet | 包含一个存储在其自己的工作表中的图表。一个包可以包含多个这样的部分,从工作簿部分引用。 | | Comments | 包含给定工作表的注释。由于可能有多个工作表,因此可能有多个注释部分。 | | Connections | 电子表格可能连接到外部数据源。这部分包含此类连接,解释如何获取此类外部数据以及如何在工作簿中使用该连接。可能只有一个这样的部分。 | | Custom Property | 包含用户定义的数据。可能有零个或多个这样的部分。 | | Customer XML Mappings | 包含 XML 文件的架构,以及有关允许将架构映射到电子表格时要使用的行为的信息。可能只有一个这样的部分。 | | Dialogsheet | 包含有关用户表单的旧客户对话框的信息。可能有零个或多个这样的部分。 | | Drawings | 包含工作表中存在的一个或多个绘图元素的演示和布局信息。每个有图纸的工作表都应该有图纸部分。 | | External Workbook References | 包含有关在其他电子表格包中引用的数据的信息。例如,电子表格可能有一个单元格,其值是根据另一个电子表格中的数据计算得出的。可能有零个或多个这样的部分。 | | Metadata | 包含与单元格相关的信息,该单元格的值通过在线分析处理 (OLAP) 技术与一个或多个其他单元格相关。 | | Pivot Table | 包含数据透视表的定义。它描述了数据透视表布局的细节,指示了数据透视表的行轴、列轴和值区域上的字段。它指示数据透视表的格式。包内的每个数据透视表都有一个数据透视表部件。 | | Pivot Table Cache Definition | 数据透视表缓存定义定义了数据透视缓存记录部分中的每个字段(即底层数据),包括字段名称和该字段中包含的数据的信息。包中的每个数据透视表都有一个数据透视表缓存定义部分。 | | Pivot Table Cache Records | 包含数据透视表的基础数据。包中的每个数据透视表将有零个或一个这样的部分。 | | Query Table | 包含描述源表如何连接到外部数据源并定义从源刷新表时使用的属性的信息。每个表可能有一个这样的部分。 | | Shared String Table | 包含出现在工作簿内任何工作表中的每个唯一字符串的一次出现。一个包有一个这样的部分。 | | Shared Workbook Revision Log | 包含有关对工作簿工作表中的单个单元格执行的编辑的信息。每个编辑会话应该有一个这样的部分 | | Shared Workbook User Data | 包含共享工作簿的所有用户的列表。一个包裹包含零个或一个这样的零件。 | | Single Cell Table Definition | 包含有关如何将自定义 XML 文件中的非重复元素映射到工作表中的单元格的信息。每个工作表可能有一个这样的部分。 | | Styles | 包含工作簿中所有单元格的所有特征,包括数字和文本格式、对齐方式、字体、颜色和边框。一个包不超过一个这样的部分。 | | Table Definition | 电子表格可以包含具有明确标记的列、行和数据区域的区域。这样的区域称为表格,每个工作表可以有零个或多个表格。对于工作表中的每个表,必须有一个包含表描述的表定义部分。(表的数据存储在相应的工作表部分。) | | Volatile Dependencies | 单元格可以包含实时数据公式,这些公式返回随时间变化的值,并且需要连接到工作簿之外的程序。在这些程序不可用的情况下,公式可以使用存储在易失性依赖项部分中的信息。一个包只能有一个这样的部分。 | | Workbook | 包含数据和对所有工作表的引用。必须只有一个工作簿部分。 | | Worksheet | 包含给定工作表的所有数据、公式和特征。包中的每个工作表都有一个这样的部分。 | # 其他 OOXML 文档共享的部分 任何 OOXML 包中都可能出现多种部件类型。下面是一些与 SpreadsheetML 文档更相关的部分。 | 部分 | 描述 | | ---------------------------------------------------------- | ------------------------------------------------------------ | | Embedded package | 包含一个完整的包,在引用包的内部或外部。例如,SpreadsheetML 文档可能包含 Wordprocessing 或 PresentationML 文档。 | | Extended File Properties (often found at docProps/app.xml) | 包含特定于 OOXML 文档的属性——诸如使用的模板、页数和单词数以及应用程序名称和版本等属性。 | | File Properties, Core | 核心文件属性使用户能够发现和设置包中的通用属性——诸如创建者姓名、创建日期、标题等属性。尽可能使用 [Dublin Core](http://dublincore.org/)属性(一组用于描述资源的元数据术语)。 | | Image | 电子表格通常包含图像。图像可以作为 zip 项目存储在包中。该项目必须通过图像部分关系和适当的内容类型来标识。 | | Theme | DrawingML 是一种跨 OOXML 文档类型的共享语言。当电子表格使用主题时,它包括一个包含在 SpreadsheetML 文档中的主题部分。主题部分包含有关文档主题的信息,即配色方案、字体和格式方案等信息。 |
上一篇:
XLSX样式和格式
下一篇:
Office Open XML
0
赞
75 人读过
新浪微博
微信
腾讯微博
QQ空间
人人网
提交评论
0
条评论
More...
<>