excel文件碎片数据恢复方法研究_第1页
excel文件碎片数据恢复方法研究_第2页
excel文件碎片数据恢复方法研究_第3页
excel文件碎片数据恢复方法研究_第4页
excel文件碎片数据恢复方法研究_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、山东科技大学工程硕士学位论文 目录目 录1 绪 论11.1 课题研究的背景和意义11.2 国内外研究现状11.3 论文的研究内容22 复合文档结构分析32.1 复合文档综述32.2 扇区与扇区链42.3 复合文档头62.4 扇区配置表92.5 符合文档目录93 excel文件结构分析93.1 excel文件的workbook流93.2 summary information流和document summary information流94 excel文件碎片的数据恢复方法研究94.1 碎片产生的原因94.2 excel文件碎片的识别方法94.3 excel文件碎片的重组方法9总结与展望9致谢9

2、参考文献9山东科技大学工程硕士学位论文 contentscontents1 introduction11.1 the background and significance of the research11.2 research at home and abroad11.3 research paper content22 compound documents32.1 composite document review32.2 sector and sector chain42.3 composite document head62.4 sector configuration table9

3、2.5 compound documents directory93 excel file structure analysis93.1 excel file workbook flow93.2 summary information flow and document summary information flow94 excel file fragments of data recovery methods study94.1 the cause of debris94.2 excel file fragment the recognition method94.3 excel file

4、 fragment the restructuring of the way9conclusion and prospect9thanks9main reference documents9山东科技大学工程硕士学位论文 绪论1 绪 论1.1 课题研究的背景和意义excel软件是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理、统计分析和辅助决策操作,广泛地应用于管理、统计财经、金融等众多领域。在电子表格软件领域,excel软件唯一的竞争对手就是自己,基于这样的绝对优势地位,excel已经成为事实上的行业标准,用户众多,而且大量的关系到单位生死的重要数据都保存成excel文件。然而

5、excel文件经常被编辑修改,这样组成这个文件的数据块在硬盘当中存储往往就不是连续存放在一起的,对于不连续存放的碎片文件,如果被删除或格式化,用当前的数据恢复软件恢复的效果是很差的,往往都是文件恢复出来了,但是打不开,或者是打开乱码。因此研究一种有效的恢复excel碎片文件的方法是有意义的。 1.2 国内外研究现状excel文件被删除或者格式化后,我们通常的方法是用相关的数据恢复软件去恢复,但是恢复后的文件,很多时候不能正常打开或者打开乱码,造成这种现象的原因是文件在删除或格式化前是不连续存放的,也就是产生碎片了,用软件恢复过来的文件都是假设文件是连续存储的情形,因此恢复过来的文件并不是删除或

6、格式化前的文件。对于有碎片的excel文件的恢复需要研究它的结构、识别和重组方法,当前的情况是:1. excel文件结构的研究情况excel是微软公司的办公软件microsoft office的组件之一, office组件的结构官方并没有公开过,然而要恢复excel碎片文件就必须要精通它的文件结构,为此国外的黑客组织用反编译的方法来推测它的结构,并形成了一些文档,比如compdocfileformat、excelfileformat等等,这都是心血之作,后来人们利用这些文献写出了很多excel文件修复软件,像国外的有excelfix 、excelrecovery、advanced excel

7、repair、xlviewer officefix、easyrecovery等,国内的有宏宇excel修复向导等,但这些软件都不是针对有碎片的excel的。2.文件碎片识别方法的研究情况识别文件碎片要依赖文件的结构,不同的文件结构有不通的特点,需要采用不通的方法。这个国内外有相关的文献对识别碎片进行了一些研究,但是这只是从大类来分,具体到excel文件的碎片识别的方法还没有出现。本文对excel文件碎片的识别提出了自己的方法。3.文件重组方法的研究情况对excel文件碎片识别出后,如何将碎片重新组合成源文件,这个还没有相关文献记载。本文在研究了excel文件的结构的基础上提出了自己的重组方法。

8、 1.3 论文的研究内容1.通过参考大量文献,对复合文档的结构进行了分析总结2.对excel文件流的结构进行了分析总结3.给出了识别excel文件碎片的方法4.给出了重组excel文件碎片的方法5.最后,对全文进行了总结,分析了取得的成果和不足,并提出了相应的工作展望。47山东科技大学工程硕士学位论文 复合文档2 复合文档结构分析2.1复合文档综述excel文件结构是一种复合文档。复合文档(compound document)是一种不仅包含文本而且包括图形、电子表格数据、声音、视频图象以及其它信息的文档。可以把复合文档想象成一个所有者,它装着文本、图形以及多媒体信息如声音和图象。目前建立复合文

9、档的趋势是使用面向对象技术,在这里,非标准信息如图像和声音可以作为独立的、自包含式对象包含在文档中。microsoft windows就是使用这种技术,叫做“ole2 storage file format”或“microsoft office compatible storage file format”。 3复合文档跟fat文件系统很相似。fat文件系统开始是操作系统引导记录dbr,存储有系统必须的每簇扇区数、扇区大小、fat表大小、分区大小、目录起始簇号等重要参数,对应于复合文档就是它的头部,也有扇区大小、fat表大小、目录起始扇区等重要参数。fat文件系统接下来是fat表存放区、目录存

10、放区、用户数据存放区,对应于复合文档就是接下来的sat表、目录存放区、流存放区。它们的对应关系如图2.1所示。文件头标准流sat表目录复合文档dbr数据fat表目录fat文件系统图2.1 对应关系图fig2.1 corresponding relationship chart综上可以看出,复合文档相当于一个小型文件系统,即excel文件结构类似于一个文件系统。从原理上说,复合文档的结构类似于一个文件系统(尤其是fat)。复合文档是由许多流(streams)构成的,这些流又存储在不同的仓库(storages)里。如果把复合文档比作你的d盘,d盘用的是fat格式,流就好比是d盘里的文件,仓库就好比

11、是d盘里的文件夹。我们知道同一个文件夹下的文件和文件夹不能重名,同理流和仓库的命名规则也要求同一个仓库下的流及仓库不能重名,不同仓库下可以有同名的流。每个复合文档都有一个根仓库(root storage)。根仓库仓库1流1 流2仓库3流3流11流3 流32 图2.2 流和仓库fig2.2 streams and storages 2.2扇区与扇区链2.2.1 扇区与扇区标识数据流可以再分成更小的数据块,称作逻辑扇区(sectors),不同于磁盘中的物理扇区。sectors 可能包含控制数据或用户数据。整个文件由一个头部(header)以及其后的所有sectors组成。sectors的大小在头中

12、确定,且每个sectors的大小都相同,一般为512字节。以下为示意图:headersector 0sector 1sector 2sector 3sector 4sector 5sector 6sectors 的编号以其在文件中的顺序列举(从0开始),一个扇区的索引叫做扇区标识(sid:sector identifier)。sid是一个有符号的32位的整型值。复合文档中描述的扇区编号和用winhex打开时的扇区编号相差1,复合文档中头部占用一个扇区,但是不给它编号,用图来描述一下如下图所示:文件头扇区0扇区1扇区2扇区3扇区4扇区5扇区n复合文档中扇区扇区0扇区1扇区2扇区3扇区4扇区5扇区

13、6扇区n winhex打开的扇区:图2.2 扇区编号对应图fig2.2 sector numbers corresponding figure如果一个sid的值非负,就表示真正存在的那个sector;如果为负,就表示特殊的含义。下图给出有效的特殊sid:表2-1 特殊sidtable 2-1 special sidsidnamemeaning-1free sid空闲sector,可存在于文件中,但不是任何流的组成部分-2end of chain sidsid链的结束标记 -3sat sid此sector用于存放扇区配置表(sat)-4msat sid此sector用于存放主扇区配置表(msat

14、)2.2.2扇区链与扇区标识链用于存储流数据的所有sectors的列表叫做扇区链(sector chain)。1这些 sectors 可以是无序的。因此用于指定一个流的 sectors 的顺序的sid 数组就称为 sid chain 。一个 sid chain 总是以 end of chain sid(2)为结束标记。例:一个流由4个sector组成,其链为1, 6, 3, 5, 2头部扇区0扇区1扇区2扇区3扇区4扇区5扇区6图2.3 流的sid链fig2.3 flow sid chain流的sid链是通过扇区配置表构建的,但短流和以下两种内部流除外:(1)主扇区配置表,其从自身构建sid链

15、(每个扇区包含下一个扇区的sid)。(2)扇区配置表,其通过主扇区配置表构建链。 2.3复合文档头2.3.1复合文档头的内容复合文档头在文件的开始,且其大小必定为512字节。这意味着第一个sector的开始相对文件的偏移量为512字节。复合文档头的结构如下:表2-2 复合文档头部3table 2-2 compound document headoffsetsizecontents08复合文档文件标识:d0h cfh 11h e0h a1h b1h 1ah e1h816此文件的唯一标识(不重要, 可全部为0)242文件格式修订号 (一般为003eh)262文件格式版本号(一般为0003h)282

16、字节顺序规则标识(见3.2)::feh ffh = little-endian ffh feh = 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的大小)3410not used444用于存放扇区配置表(sat)的sector总数484用于存放目录流的第一个sector的s

17、id (见6)524not used564标准流的最小大小(一般为4096 bytes), 小于此值的流即为短流。604用于存放短扇区配置表(ssat)的第一个sector的sid (见5.2),或为2 (end of chain sid)如不存在。644用于存放短扇区配置表(ssat)的sector总数 684用于存放主扇区配置表(msat)的第一个sector的sid (见4.1),或为2 (end of chain sid) 若无附加的sectors724用于存放主扇区配置表(msat)的sector总数76436存放主扇区配置表(msat)的第一部分,包含109个sid。其中最重要的2

18、个参数的功能说明如下:(1)存放目录流的第一个sector的sid用该参数可以定位到目录流的开始,具体到excel文件,目录流中有根目录入口、workbook流入口、summary information流入口、document summary information流。(2)主扇区配置表(msat)的内容这里面包含了sat表占用了多少扇区,分别是那几个扇区。根据这个信息,可以推算文件的大小。用winhex打开一个excel文件,可以看到头部占一个扇区,结构如下图所示:图2.3 复合文档头部fig2.3 compound document head2.3.2 字节顺序(byte order)文

19、件数据的二进制存储有两种方法little-endian 和 big-endian,但实际应用中只使用little-endian方法即:低位8字节存放在地址的低位,高位8字节存放在地址的高位。3例:一个32位的整数13579bdfh(转为十进制即324508639),以little-endian存放为dfh 9bh 57h13h,以big-endian 存放为 13h 57h 9bh dfh。(h下标表示十六进制)2.3.3 扇区偏移量从头中的信息可以计算出一个sector的偏移量(offset),公式为:sec_pos(sid) = 512 + sid * s_size = 512 + sid

20、 * 2 ssz例:ssz = 10 and sid = 5:sec_pos(sid) = 512 + sid * 2 ssz = 512 + 5 * 210 = 512 + 5 * 1024 = 5632. 2.4扇区配置表2.4.1主扇区配置表主扇区配置表(msat:master sector allocation table)是一个sid数组,指明了所有用于存放扇区配置表(sat:sector allocation table)的sector的sid。msat的大小(sid个数)就等于存放sat的sector数,在头中指明。3复合文档的的重要参数保存在头部的前76个字节中,这样头部还剩余

21、436字节,而每一个sid占用4个字节,所以msat的前109个sid存放于头部中,如果一个msat的sid数多于109个,那么多出来的sid将存放于后面的sector中,头中已经指明了用于存放msat的第一个sector的sid。在用于存放msat的sector中的最后一个sid指向下一个用于存放msat的sector,如果没有下一个则为end of chain sid(-2)。存放msat的sector的内容为:(s_size表示sector的大小)3表2-3 存放mast扇区内容table 2-3 mast sector content storedoffsetsizecontents0

22、s_size4msat的(s_size4) / 4个sid的数组s_size44下一个用于存放msat的sector的sid,或2(已为最后一个) 最后一个存放msat的sector可能未被填满,空闲的地方将被填上free sid(-1)。例:一个复合文档需要320个sector用于存放sat,头中指定sector的大小为512字节,这说明一个sector可存放128个sid。mast有400个sid,前109个放于头中,其余的171个将要占用2个sector来存放。此例假定第一个存放msat的sector为sector 1,则sector 1包含127个sid。第128个sid指向一个用于存

23、放msat的sector,假定为sector 6,则sector 6包含剩下的84个sid(最后一个sid为2,其他的值为1)。2.4.2 扇区配置表扇区配置表(sat:sector allocation table)是一个sid数组,包含所有用户流(短流除外)和内部控制流(the short-stream container stream, the short-sector allocation table, and the directory, 见7)的sid链。sat的大小(sid个数)就等于复合文档中所存在的sector的个数。3sat的建立就是通过按顺序读取msat中指定的secto

24、r中的内容。存放sat的sector的内容:(s_size表示sector的大小)表2-4 存放sat扇区内容table 2-4 store content sat sectoroffsetsizecontents0s_size sat的s_size / 4个sid的数组当通过sat为一个流创建sid链时,sat数组的当前位置(array index)表示的就是当前的sector,而该位置存放的sid则指向下一个sector。sat可能在任意位置包含free sid(1),这些sector将不被流使用。如果该位置包含end of chain sid(2)表示一个流的结束。如果sector用于存

25、放sat则为sat sid(3),同样用于存放msat则为msat sid(4)。一个sid链的起点从用户流的目录入口(directory entry)或头(内部控制流)或目录流本身获得。例:一个复合文档包含一个用于存放sat的sector(sector 1)和2个流。sector 1的内容如下图:图2.4存放sat扇区内容fig2.4 store content sat sector在位置1其值为3,表明sector 1是sat的一部分。其中一个流为内部目录流,假定头中指定其开始为sector 0,sat中每个项中存放的都是下一个扇区的位置,从图2.4中可以看出位置0的值为2,位置2的值为3

26、,位置3 的值为2。因此目录流的sid链为0, 2, 3, 2,即此目录流存放于3个sector中。目录中包含一个用户流的入口假定为sector 10,从图中可看出此流的sid链为10, 6, 7, 8, 9, 2。 2.5复合文档目录2.5.1 目录结构复合文档的流和仓库都要生成一个索引,里面含有该流的起始簇号、大小、构成红黑树的左右节点等信息,我们把它称作目录(directory),它是一种内部控制流,由一系列目录入口(directory entry)组成。每一个目录入口都指向复合文档的一个流,由目录入口可以定位流的开始处。目录入口以其在目录流中出现的顺序被列举,第一个目录入口索引称为根目

27、录入口,标识编号(did: directory entry identifier)为0,后面的目录入口did顺序编号。如下所示:directory entry 0 directory entry 1 directory entry 2.目录入口的位置不因其指向的仓库或流的存在与否而改变。如果一个仓库或流被删除了,其相应的目录入口就标记为空。在目录的开始有一个特殊的目录入口,叫做根仓库入口(root storage entry),其指向根仓库。3目录将每个仓库的直接成员(仓库或流)放在一个独立的红黑树(red-black tree)中。红黑树是一种树状的数据结构,本文仅简单介绍一下,详细情况请参

28、考有关资料。建构一个red-black tree的规则3:1. 每个节点(node)的颜色属性不是红就是黑。2. 根节点一定是黑的。3. 如果某个节点是红的,那它的子节点一定是黑的。4. 从根节点到每个叶节点的路径(path)必须有相同数目的黑节点。图2.5红黑树fig2.5 red and black tree注意并不总是执行上述规则。安全的方法是忽略节点的颜色。例:以2.1中图2.2为例1.根仓库入口描述根仓库,它不是任何仓库入口的成员,因此无需构建红黑树。2.根仓库的所有直接成员(“storage1”, “storage2”, “stream1”, “stream2”, “stream3

29、”, 和 “stream4”)将组成一棵红黑树,其根节点的did存放于根仓库入口中。3.仓库storage1只有一个成员stream1,stream1构成一棵红黑树,此树只有一个节点。storage1的目录入口包含stream1的did。4. 仓库storage2包含3个成员“stream21”, “stream22”, 和“stream23”。这3个成员将构建一棵红黑树,其根节点的did存放于storage2的目录入口中。这种存放规则将导致每个目录入口都包含3个did:1.在包含此目录入口的红黑树中,此目录入口的左节点的did。2.在包含此目录入口的红黑树中,此目录入口的右节点的did。3.

30、若此目录入口表示一个仓库,则还包含此仓库的直接成员所组成的另一颗红黑树的根节点的did。在构建红黑树的过程中,一个节点究竟作为左还是右,是通过比较其名字来判断的。一个节点比另一个小是指其名字的长度更短,如长度一样,则逐字符比较。规定:左节点根节点右节点。2.5.2 目录入口一个目录入口的大小严格地规定为128字节,计算其相对目录流的偏移量的公式为:dir_entry_pos(did) = did/128。目录入口的内容如下表所示:表2-5 目录入口table 2-5 directory entryoffsetsizecontents064此入口的名字(字符数组), 一般为16位的unicode

31、字符,以0结束。(因此最大长度为31个字符)642用于存放名字的区域的大小,包括结尾的0。(如:一个名字右5个字符则此值为(5+1)2 = 12)661入口类型: 00h = empty 03h = lockbytes (unknown) 01h = user storage 04h = property (unknown) 02h = user stream 05h = root storage671此入口的节点颜色: 00h = red 01h = black684其左节点的did (若此入口为一个user storage or stream),若没有左节点就为1。724其右节点的did

32、(若此入口为一个user storage or stream),若没有右节点就为1。764其成员红黑树的根节点的did (若此入口为storage), 其他为1。8016唯一标识符(若为storage)(不重要, 可能全为0)964用户标记(不重要, 可能全为0)1008创建此入口的时间标记。大多数情况都不写。1088最后修改此入口的时间标记。大多数情况都不写。1164若此为流的入口,指定流的第一个sector或short-sector的sid,若此为根仓库入口,指定短流存放流第一个sector的sid,其他情况,为0。1204若此为流的入口,指定流的大小(字节)若此为根仓库入口,指定短流存放

33、流的大小(字节)其他情况,为0。1244not used 如果复合文档是一个excel文件,在目录流中会有一个workbook流入口,从该入口中能得到该流的大小,用这个参数与识别出的workbook流的大小比较,可确定该目录流是不是该excel文件的一部分。用winhex打开一个excel文件的根目录入口,如下图所示:图2.5复合文档根目录入口fig2.5 composite document root directory entry山东科技大学工程硕士学位论文 excel 文件结构3 excel文件结构分析3.1 excel文件的workbook流前面分析了复合文档的结构,也就是excel文

34、件的整体结构,这是碎片文件重组理论基础,然而对碎片文件进行识别,还需要分析excel文件的三个重要的流。3.1.1 版本信息excel文件格式被称为biff (binary interchange file format),在excel家族中,excel文件有多个版本,每个版本的文件格式又不尽相同,以下是excel文件的各个版本情况:表3-1 excel文件版本table 3-1 excel file versionexcel versionbiff versiondocument type file typeexcel 2.1biff2worksheet streamexcel 3.0bif

35、f3worksheet streamexcel 4.0biff4sworksheet streambiff4wworksheet streamexcel 5.0biff5workbook ole2 storageexcel 7.0 (excel 95biff7workbook ole2 storageexcel 8.0 (excel 97)biff8workbook ole2 storageexcel 9.0 (excel 2000)biff8workbook ole2 storageexcel 10.0 (excel xp)biff8xworkbook ole2 storageexcel 1

36、1.0 (excel 2003)biff8xworkbook ole2 storage从biff2到biff4s,excel支持单个工作表(worksheet);从biff4w起,excel支持多个工作表,又称工作簿(workbook)。excel2007文件应经不是基于复合文档的结构了,而是open xml结构,本文研究的碎片文件识别是基于复合文档结构,而这种结构当前流行的是biff8格式, biff8x为biff8的扩展版本,它只是在biff8的基础上改动了部分属性值。3.1.2记录结构excel文件由不同类型的记录(record)组成,每条记录包括记录头和记录体。记录头是4byte,前两

37、位指定记录类型的代码(opcode),后两位指定记录长度;记录体是存储该记录的实际数据;记录中按照先“低字节”后“高字节”排列,例如记录中 09 08,应该为16进制的0809h。40 1 2 3 4 5 6 7 xxxxxxxxxxxxxxxx02:记录类型标识;24:记录包含数据的长度4:实际数据如果实际数据大于两个字节所能表达的长度,会有若干条标识为“continue”的记录紧跟其后。3.1.3文件结构在biff8格式的excel文件中,workbook流由一个workbook结构以及若干个worksheet结构组成,如表3-2所示:表3-2 workbook流结构table 3-2 w

38、orkbook flow structureworkbook结构worksheet结构worksheet结构 3.1.3.1 workbook结构workbook结构也就是我们熟悉的工作簿,其结构是由很多记录构成的,每条记录都有一个标识,workbook结构是由bof记录开始,由eof记录结束。下面列出所有可能出现的记录标识,如表3-3所示:表3-3 workbook结构4table 3-3 workbook structure记录标识说明bof开始标志file protect blockoptional;子块 writeprotoptional filepassoptional writea

39、ccessoptional filesharingoptionalcodepageoptionaldspoptionaltabidoptionalfngroupcountoptionalworkbook protection blockoptional;子块 windowprotectoptional protectoptional objectprotectoptional passwordoptionalwindow1backupoptionalhideobjoptionaldatamodeoptionalprecisionoptionalrefreshalloptionalbookboo

40、loptionalfont多条formatoptional;多条xf多条style多条paletteoptionaluseselfsoptionalboundsheet多条countryoptionallink tableoptional;子块 supbook block子块; 多条 supbook externnameoptional;多条 xct多条 crn多条 externsheet nameoptional;多条shared string tableoptional;子块 sst extssteof结束标志 “optional”标志的记录或块,表示在excel文件中可能出现也可能不出现

41、,有“多条” 标志的记录或块,表示在excel文件中可能有多条该类型的记录。下面是对表3-3 workbook结构中的记录标识的内容含义以及代码进行详细分析,这些标识的代码是我们可以识别出workbook流产生的碎片的基础。(1) bof 表示文件、记录块的开始,总与eof成对使用,记录类型标识 0809h。(2)writeprot该记录没有任何数据,如果在excel文件中存在,表示该文件是写保护的,其中密码存放于记录filesharing中,记录类型标识 0086h。(3)filepass该记录包含文件读写的密码信息,文件密码以及该记录后的所有记录都被加密,记录类型标识 002fh。(4)w

42、riteaccess该记录存储了保存excel文件的用户名称,记录分配固定长度的空间存储用户名称,不够的用空格填充,记录类型标识 005ch。(5)filesharing如果是写保护,该记录包含写保护密码,记录类型标识 005bh。(6)codepage表示excel文件的编码类型,biff8中总是1200h,记录类型标识 0042h。(7)dsf该记录标明excel文件是否包含附加的biff5/ biff7工作簿,记录类型标识 0161h。(8)windowprotect该记录标识一个workbook中是否对窗口设定进行保护,记录类型标识 0019h。(9)protect该记录标识一个wor

43、kbook中是否对worksheet内容进行保护,记录类型标识 0012h。(10)objectprotect该记录标识是否对当前worksheet中的对象进行保护,记录类型标识 0063h。(11)password该记录保存16位的哈希值,该值从保护密码运算得到,记录类型标识 0013h。(12)window1这个记录描述excel打开文件后窗口的基本设定,包括高度、宽度、位置等信息,记录类型标识 003dh。(13)backup标识excel在保存文件时是否一个额外的备份文件,记录类型标识 0040h。(14)hideobj标识excel打开文件时是否显示对象,记录类型标识 008dh。(

44、15)datemode标识excel的时间基准点,记录类型标识 0022h。(16)precision标识excel包含公式时,公式使用的变量以界面显示为准还是以存储的真实数据为准;excel中每个表格都可以定义显示模式,对于浮点数,如果表格定义为整数模式。界面只显示整数为,但是在文件中存储的是真正的浮点数,记录类型标识 000eh。(17)refreshall记录类型标识 00b7h。(18)bookbool标识excel是否保存外部工作簿的文件链接,记录类型标识 00dah。(19)font该记录对使用到的字体进行描述,相同类型的记录组成一个列表,其他记录要求字体属性时,会标明字体记录的地

45、址,记录类型标识 0031h。(20)format该记录对excel中数字格式进行描述,记录类型标识 041eh。(21)xf该记录为格式扩展记录(extended format),描述excel文件中表格、行、列、风格等的格式属性,记录类型标识 00e0h。(22)style该记录描述用户自定义单元风格或excel内嵌单元风格,该记录紧跟与xf记录后,每一个style记录都会指向一个xf记录,从中获得单元的其他属性。用户自定义单元风格:记录类型标识 0293h。excel内嵌单元风格:记录类型标识 0293h。(23)palette该记录标识用户可用到的所有颜色,记录类型标识 0092h。(

46、24)useselfs该记录描述excel是否使用“自然语言公式”,记录类型标识 0160h。(25)boundsheet一个excel文件就是一个workbook,一个workbook包含多个worksheet,每条boundsheet记录代表一个worksheet,主要记录worksheet的名称以及到对应worksheet的位置,记录类型标识 0085h。(26)country该记录标识两类国家代码,一类是excel文件用到的语言代码,一类是系统区域代码,主要用于时间设定,记录类型标识 008ch。(27)sst用来存放字符串,目的是为了让各个sheet都能够共享该sst中字符串内容,记

47、录类型标识 00fch。(28)extended sst 在读取xls文件时显得不重要,但当创建xls文件时却非常重,记录类型标识00ffh。(29)eof表示文件、记录块的结束,总与bof成对使用,记录类型标识 000ah。3.1.3.2 worksheet结构worksheet也就是我们所熟悉的工作表,其结构由很多记录构成,描述了各个工作表的数据内容,每个worksheet都是由bof记录开始,由eof记录结束。其结构如表3-4所示:表3-4 worksheet结构4table 3-4 worksheet structure记录标识说明bof开始标志uncalcedoptionalinde

48、xoptionalcalculation settings blockoptional;子块 calccountoptional calcmodeoptional precisionoptional refmodeoptional deltaoptional iterationoptional datemodeoptional saferecalcoptionalprintheadersoptionalprintgridlinesoptionalgridsetoptionalgutsoptionaldefaultrowheightoptionalwsbooloptionalpage setti

49、ngs blockoptional;子块 horizontalpagebreaksoptional verticalpagebreaksoptional headeroptional footeroptional hcenteroptional vcenteroptional leftmarginoptional rightmarginoptional topmarginoptional bottommarginoptional plsoptional setupoptional bitmapoptionalworksheet protection blockoptional;子块 prote

50、ctoptional windowprotectoptional objectprotectoptional scenprotectoptional passwordoptionaldefcolwidthoptionalcolinfooptional;多条sortoptionaldimensionscell tableoptional;子块 row blocks子块; 多条 row多条 cell blocksoptional;子块; 多条 ixfeoptional; blank boolerr integer label labelsst mulblank mulrk number rk rs

51、tring dbcelloptional;window2scloptionalpaneoptionalselectionoptional;多条standardwidthoptionalmergedcellsoptionallabelrangesoptionalconditional formatting tableoptional;子块 condfmt多条 cf多条hyperlink tableoptional;子块 hlink多条 quicktipoptionaldata validity tableoptional;子块 dval dv多条sheetlayoutoptionalsheetp

52、rotectionoptionalrangeprotectionoptionaleof结束标志下面是对表3-3 worksheet结构中的记录标识的内容含义以及代码进行详细分析,这些标识的代码是我们可以识别出workbook流产生的碎片的基础。(1)bof同workbook的bof(2)uncalced如果该记录出现在excel文件中,表明文件中的公式没有在文件保存前重新计算,记录类型标识 005eh。(3)index该记录存储已被使用的行范围以及其在worksheet结构中的相对偏移量,记录类型标识 020bh。(4)calccount该记录标识excel中公式能够被反复执行的最大次数,记录类型标识 000ch。(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论