第一章、XLS文件和十六进制
1.1 XLS文件和BIFF版本对照
通常我们把EXCEL的文件格式叫做BIFF,即 Binary Interchange File Format的缩写,随着EXCEL的不断升级,其文件格式BIFF也在同步的更新与完善,因此对于不同版本的EXCEL有着不同的BIFF版本,下表对EXCEL目前最常用的版本和BIFF的部分版本进行了对照。
EXCEL版本 | BIFF版本 |
EXCEL 8.0(EXCEL 97) | BIFF8 |
EXCEL 9.0(EXCEL 2000) | BIFF8 |
EXCEL 10.0(EXCEL XP) | BIFF8x |
EXCEL 11.0(EXCEL 2003) | BIFF8x |
其中BIFF8x为BIFF8的扩展版本,它在BIFF8的基础上改动了部分属性值。
1.2 结构知识
在介绍XLS的文件结构时,大家需要知道关于XLS二进制文件的一些基本的结构内容知识:
1、 在文件数据的二进制存储中,低位8字节存放在地址的低位,高位8字节存放在地址的高位,因此在用十六进制编辑器来查看XLS文件时,对于一个完整的双字节,它的显示如 09 08,那么他的十六进制值应该为0x0809。
2、 XLS文件中的每条完整的数据是由一个标识、长度和数据内容来体现的,如某条数据显示 09 08 02 00 00 00,那么09 08代表这条完整数据的标识,02 00代表后面内容的长度,而00 00为实际的内容数据。
3、 在数据结构中,1个block的大小为512bytes,而XLS文件是由整数个block来组成的,因此其大小也均为512的倍数。
4、 XLS文件整体被分为多个子流(SubStream),这些SubStream都由若干个整数倍Block来组成的。
1.3 撰写规范
1、对于数据内容描述的表格,均采用如下样式
Offset | Size | Content |
其中
Offset(偏移量):该偏移量是指当前数据内容开始与该段数据内容区开始的偏移值。
Size(大小):该段数据内容区的大小
Content(内容):该段数据内容区的部分值或是说明
2、对于一段完整的数据区的描述方式为:
标识头+ 标识名称 + 标识说明+ 数据内容