一.概述
- Excel2003以之前版本的存储结构是二进制(BIFF),Excel2007及之后的存储格式是XML。
- Excel介绍:https://en.wikipedia.org/wiki/Microsoft_Excel
- Excel XLS文件格式PDF:http://www.openoffice.org/sc/excelfileformat.pdf
- 复合文档格式PDF:http://www.openoffice.org/sc/compdocfileformat.pdf
- Microsoft Windows和Apple Macintosh2发布的不同Excel版本:
二.BIFF
- Excel2003使用的文件格式叫做BIFF (二进制文件格式),即Binary Interchange File Format的缩写,随着Excel的不断升级,其文件格式BIFF也在同步的更新与完善,因此对于不同版本的Excel有着不同的BIFF版本
- 写入Worknook或WorkSheet的对应文档格式和对于的Excel版本
- 现在的xls文件格式一般为BIFF8,BIFF8包含对较旧BIFF版本的主要更改,例如处理Unicode字符串
三.直接顺序
- XLS文件使用Little-Endian method1存储包含多个字节的所有数据项。 这意味着最低有效字节首先被存储,而最高有效字节是最后存储的。
- 这适用于所有数据类型,如16位整数,32位整数,浮点值和Unicode字符。
- 例如:32位的整数 - 13579BDFH
- 被转换后的字节顺序为:DFH 9BH 57H 13H
四.Workbook
1.一个Workbook可以包含几个sheet,有多种类型的sheet,如:常规sheet、chart sheet、macro sheet(宏sheet)、Visual Basic modules(VB模块),可以将所有类型的sheet组合到Workbook中。
2.每个Workbook包含Workbook的全局设置,成为Workbook全局变量。
3.Workbook默认文件扩展名为“XLS”.
4.Workbook的一般结构:
Workbook Globals SubStream : 包含Workbook全局信息的SubStream,他是BIFF5 - BIFF8 Workbooks的Workbook Stream的一部分。
Sheet SubStream : 描述一个Workbook中一个sheet的SubStream,他也是BIFF5 - BIFF8 Workbooks的Workbook Stream的一部分。
五.文件结构
5.1 流文件 - Stream File
1. 所有文档类型和BIFF版本都可以存储在一个简单的
stream file
中,BIFF5之前的文件总是以这种方式存储。
2.
BIFF5-BIFF8
Workboo文档,通常以
复合文档
的格式存储。如果这些以stream file的格式存储,则整个文件仅由
“Book” stream (BIFF5) 或 “Workbook” stream (BIFF8)
组成。
5.2 复合文档 - Compound Document File (BIFF5-BIFF8)
1. 包含多个sheet的
BIFF5-BIFF8 Workboo文档通常使用复合文档(也称为“
OLE2
storage file format ”或“
Microsoft Office compatible storage file format ”)的格式存储。
2. 复合文档包含不同类型数据的几种流,可以在复合文档文件格式的完整文档中查找: http://sc.openoffice.org/compdocfileformat.pdf
5.3 Workbook Stream
1.
BIFF5-BIFF8 workbook 文档是以复合文档的格式存储的,复合文档的root storage包含一个stream,叫做
Workbook Stream 。BIFF8工作簿的复合文档中流的名字叫做"Workbook",
2.如果
BIFF5-BIFF8 workbook document 是以Stream File(查看5.1 Stream File)的格式存储,则整个流叫做
Workbook Stream
.
5.4 Substreams
1. BIFF5-BIFF8 Workbook Stream可以分为几个部分 -
workbook globals 和包含的sheet,每个部分都被称为一个SubStream,由流中的起始位置和结束位置定义。
2. Workbook Globals SubStream : 包含Workbook全局信息的SubStream,他是BIFF5 - BIFF8 Workbooks的Workbook Stream的一部分。
3.Sheet SubStream : 描述一个Workbook中一个sheet的SubStream,他也是BIFF5 - BIFF8 Workbooks的Workbook Stream的一部分。
5.5 Substreams in the BIFF5-BIFF8 Workbook Stream
1. 在
BIFF5-BIFF8 Workbook Stream 中,
Workbook Globals Substream 是这个流的头,随后的是按在文档中sheet顺序的
Sheet Substreams 。
2.
BIFF5-BIFF8 Workbook Stream 的通用结构:
六.BIFF Record 结构
1. 大多数
Excel streams 或 substreams (查看5.3或5.4)分成了Records,每一个Record包含文档中各种内容和功能的特定数据。
2. Record是由指定Record的类型和大小的头,以及Record数据组成。
3. BIFF Record的通用结构:
4.Record数据的最大大小,取决于BIFF的版本,如果Record数据的大小超过当前的限制,则会添加一个或多个
CONTINUE record,在一个
CONTINUE record,之前的Record数据照常。
5.在文档中,只显示Record数据而没有Recordtou头,所有的偏移量相对应Record数据的开始而不是整个Record。
6.大部分Record的内容由于BIFF版本的不同而不同,这将在单独的表中描述,在一些较新的BIFF版本中替换了一些旧的Record,Excel不再将这些旧的Record写入到新华路BIFF版本中。
七.下一篇
复合文档(二) - 仓库与扇区链: http://blog.csdn.net/lipinganq/article/details/76713880