您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 招标投标 > word、ppt、excel文件格式解析
word、ppt、excel文件格式解析1.文件格式层级关系word、ppt、excel文档的原理就像一个文件系统。文档将数据分成许多流(Streams),这些流又存储在不同的仓库(Storages)里。流和仓库的命名规则与文件系统相似,同一个仓库下的流及仓库不能重名,不同仓库下可以有同名的流。每个复合文档都有一个根仓库(rootstorage)。所有的流又分成更小的数据块,叫做数据扇区(sectors)。Sectors可能包含控制数据或用户数据。文档分为由大到小的三层关系:仓库(Storages)、流(Streams)、数据扇区(sectors)。仓库流扇区三者的关系是树形关系,由目录流维护。用于存储流数据的所有Sectors的列表叫做扇区链(SectorChain)。这些Sectors可以是无序的。因此用于指定一个流的Sectors的顺序的SID数组就称为SIDchain。一个SIDchain总是以EndOfChainSID(-2)为结束标记。例:一个流由4个Sector组成,其SID链为[1,6,3,5,–2]。2、文档头文档头在文件的开始,且其大小必定为512字节。这意味着第一个Sector的开始相对文件的偏移量为512字节。复合文档头的结构如下:OffsetSizeContents08复合文档文件标识:D0HCFH11HE0HA1HB1H1AHE1H816此文件的唯一标识(不重要,可全部为0)242文件格式修订号(一般为003EH)262文件格式版本号(一般为0003H)282字节顺序规则标识(见3.2)::FEHFFH=Little-EndianFFHFEH=Big-Endian302复合文档中sector的大小(ssz),以2的幂形式存储,sector实际大小为s_size=2ssz字节(一般为9即512字节,最小值7即128字节)322short-sector的大小(见5.1),以2的幂形式存储,short-sector实际大小为s_s_size=2sssz字节(一般为6即64字节,最大为sector的大小)3410Notused444用于存放扇区配置表(SAT)的sector总数484用于存放目录流的第一个sector的SID(见6)524Notused564标准流的最小大小(一般为4096bytes),小于此值的流即为短流。604用于存放短扇区配置表(SSAT)的第一个sector的SID(见5.2),或为–2(EndOfChainSID)如不存在。644用于存放短扇区配置表(SSAT)的sector总数684用于存放主扇区配置表(MSAT)的第一个sector的SID(见4.1),或为–2(EndOfChainSID)若无附加的sectors。724用于存放主扇区配置表(MSAT)的sector总数76436存放主扇区配置表(MSAT)的第一部分,包含109个SID。3、扇区配置主扇区配置表(MSAT:mastersectorallocationtable)是一个SID数组,指明了所有用于存放扇区配置表(SAT:sectorallocationtable)的sector的SID。MSAT的大小(SID个数)就等于存放SAT的sector数,在头中指明。扇区配置表(SAT:sectorallocationtable)是一个SID数组,包含所有用户流(短流除外)和内部控制流(theshort-streamcontainerstream,theshort-sectorallocationtable,andthedirectory,见7)的SID链。SAT的大小(SID个数)就等于复合文档中所存在的sector的个数。4、短流当一个流的大小小于指定的值(在头中指定),就称为短流(short-stream)。短流并不是直接使用sector存放数据,而是内含在一种特殊的内部控制流——短流存放流(short-streamcontainerstream)中。短流存放流象其他的用户流一样:先从目录中的根仓库入口(rootstorageentry)获得第一个使用的sector,其SID链从SAT中获得。然后此流将其所占用的sectors分成short-sector,以便用来存放短流。此处也许较难理解,我们来打个比方:既然流组成符合文档,而短流组成短流存放流,这两者是相似的。把短流存放流当作复合文档,那么短流对应流,short-sector对应sector,唯一的不同是复合文档有一个头结构,而短流存放流没有。short-sector的大小在头中已经指定,因此可根据SID计算short-sector相对于短流存放流的偏移量(offset)。短扇区配置表(SSAT:short-sectorallocationtable)是一个SID数组,包含所有短流的SID链。与SAT很相似。5、目录目录(directory)是一种内部控制流,由一系列目录入口(directoryentry)组成。每一个目录入口都指向复合文档的一个仓库或流。目录入口以其在目录流中出现的顺序被列举,一个以0开始的目录入口索引称为目录入口标识(DID:directoryentryidentifier)。
本文标题:word、ppt、excel文件格式解析
链接地址:https://www.777doc.com/doc-3731691 .html