欢迎来到蓝梦软件下载中心!
免责声明:本站软件仅用于恢复和销毁存储介质数据,如果涉及个人隐私等问题,请使用者自行承担,使用软件默认同意本声明!
Q Q:1731278955
传真:0510-82737376
手机:13400027332
E-mail:1731278955@qq.com

技术文章
您所在的位置:首页 > 技术文章 >

EXCEL XLS文件布局结构



作者: 来源: 日期:2018/1/5 16:00:26 人气:18 

件头结构:

Header的前8字节Byte[],也就是整个文件的前8字节,都是固定的0xD0 0xCF 0x11 0xE0 0xA1 0xB1 0x1A 0xE1,如果不是则说明不是复合文件。

  • 从008H到017H的16字节,是Class Id,不过很多文件都置的0。

  • 从018H到019H的2字节UInt16,是文件格式的次要版本。

  • 从01AH到01BH的2字节UInt16,是文件格式的主要版本。

  • 从01CH到01DH的2字节UInt16,是固定为0xFE 0xFF,表示文档使用的是Little Endian(低位在前,高位在后)。

  • 从01EH到01FH的2字节UInt16,是Sector大小的幂,默认为9(0x09 0x00),即每个Sector为512字节。

  • 从020H到021H的2字节UInt16,是Mini-Sector大小的幂,默认为6(0x06 0x00),即每个Mini-Sector为64字节。

  • 从022H到023H的2字节UInt16,是预留的,必须置0。

  • 从024H到027H的4字节UInt32,是预留的,必须置0。

  • 从028H到02BH的4字节UInt32,是预留的,必须置0。

  • 从02CH到02FH的4字节UInt32,是FAT的数量。

  • 从030H到033H的4字节UInt32,是Directory开始的SectorID。

  • 从034H到037H的4字节UInt32,是用于事务的,必须置0。

  • 从038H到03BH的4字节UInt32,是最小串(Stream)的最大大小,默认为4096(0x00 0x10 0x00 0x10)。

  • 从03CH到03FH的4字节UInt32,是MiniFAT表开始的SectorID。

  • 从040H到043H的4字节UInt32,是MiniFAT表的数量。

  • 从044H到047H的4字节UInt32,是DIFAT开始的SectorID。

  • 从048H到04BH的4字节UInt32,是DIFAT的数量。

  • 从04CH到1FFH的436字节UInt32[],是前109块FAT表的SectorID。

Directory结构:

从000H到040H的64字节,是存储DirectoryEntry名称的,并且是以Unicode存储的,即每个字符占2个字节,其实可以看做是UInt16。

  • 从041H到042H的2字节UInt16,是DirectoryEntry名称的长度(包括最后的“\0”)。

  • 从042H到042H的1字节Byte,是DirectoryEntry的类型。(主要的有:1为目录,2为节点,5为根节点)

  • 从044H到047H的4字节UInt32,是该DirectoryEntry左兄弟的EntryID(第一个DirectoryEntry的EntryID为0,下同)。

  • 从048H到04BH的4字节UInt32,是该DirectoryEntry右兄弟的EntryID。

  • 从04CH到04FH的4字节UInt32,是该DirectoryEntry一个孩子的EntryID。

  • 从074H到077H的4字节UInt32,是该DirectoryEntry开始的SectorID。

  • 从078H到07BH的4字节UInt32,是该DirectoryEntry存储的所有字节长度。