复合文档格式(一)- Excel XLS文件格式

时间:2024-03-29 13:04:32

一.概述

  1. Excel2003以之前版本的存储结构是二进制(BIFF),Excel2007及之后的存储格式是XML。
  2. Excel介绍:https://en.wikipedia.org/wiki/Microsoft_Excel
  3. Excel XLS文件格式PDF:http://www.openoffice.org/sc/excelfileformat.pdf
  4. 复合文档格式PDF:http://www.openoffice.org/sc/compdocfileformat.pdf
  5. Microsoft Windows和Apple Macintosh2发布的不同Excel版本:
复合文档格式(一)- Excel XLS文件格式

二.BIFF

  1. Excel2003使用的文件格式叫做BIFF (二进制文件格式),即Binary Interchange File Format的缩写,随着Excel的不断升级,其文件格式BIFF也在同步的更新与完善,因此对于不同版本的Excel有着不同的BIFF版本
  2. 写入Worknook或WorkSheet的对应文档格式和对于的Excel版本
  3. 现在的xls文件格式一般为BIFF8,BIFF8包含对较旧BIFF版本的主要更改,例如处理Unicode字符串

复合文档格式(一)- Excel XLS文件格式

三.直接顺序

  1. XLS文件使用Little-Endian method1存储包含多个字节的所有数据项。 这意味着最低有效字节首先被存储,而最高有效字节是最后存储的。
  2.  这适用于所有数据类型,如16位整数,32位整数,浮点值和Unicode字符。
  3. 例如:32位的整数 - 13579BDFH
  4. 被转换后的字节顺序为: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的一般结构:

复合文档格式(一)- Excel XLS文件格式
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 的通用结构:

复合文档格式(一)- Excel XLS文件格式

六.BIFF Record 结构

1. 大多数Excel streams 或 substreams (查看5.3或5.4)分成了Records,每一个Record包含文档中各种内容和功能的特定数据。
2. Record是由指定Record的类型和大小的头,以及Record数据组成。
3. BIFF Record的通用结构:
复合文档格式(一)- Excel XLS文件格式
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



















相关文章