这几天一直在研究了复合文档了(主要是XLS的碎片提取)。
     XLS文档是MS运用的比较成熟的一种结构,对于文字方面MS采用了SST共享字符的方法,把出现量比较大的字符放在FC00标志下的一个模块中,而对于单独的SHEET而言只分为表格模块、风格等等地方。
     WORKBOOK中采用了MS NTFS文件系统元文件的记录方法:头+长度+指针(数据区),当然WORKBOOK起始也是有标志的,而SHEET表的个数、偏移值在WORKBOOK模块中也得到了体现。
    SHEET中的模块也就是刚才提到的表格个数(行列等)、风格。这些也是比较明显的。
     对于碎片的定位可以借助于这些信息,如SHEET个数,偏移值。然后根据这些来定位每个SHEET表,而SHEET表的大小也可以对碎片提供帮助。可以说每个模块的属性对于定位都是很有帮助的!
      最近实验了一个大小为4.5M的XLS(存放路径为C:\Documents and Settings\Administrator\桌面,文件系统为NTFS)。由于该位置操作系统要做频繁的操作,所以产生碎片的机率也是比较高的。经过长达两天多的实验,终于有了实质性进展,其它的就是经验了,呵呵!对了该文件有11个碎片,累!