本文翻译自openoffice的Excel文件格式文档,在此附上原文PDF地址:
http://sc.openoffice.org/excelfileformat.pdf。
(1)本人水平有限,如有不当之处,请予评论处指正。
(2)本文是用Markdown语法翻译的,原文格式无法原样翻译,个别地方会以图片形式代替。
(3)文件格式对应的Excel 版本 2, 3, 4, 5, 95, 97, 2000, XP, 2003。
(4)本文仅供个人学习研究,如需复制、转载请注明出处,未经作者许可,不得作任何商业用途。
总目录
- 第一章 前言
- 第二章 文档结构(Document Structure)
- 第三章 公式
- 第四章 -工作表/工作簿流(Worksheet/Workbook Stream)
- 第五章 工作表/工作簿记录(Worksheet/Workbook Records)
- 第六章 绘图对象(Drawing Objects)
- 第七章 图表
- 第八章 数据透视表
- 第九章 更改跟踪(Change Tracking)
- 第十章 工作区文档(Workspace Documents)
第一章 前言
1.1许可证说明
1.1.1 公共文档许可证说明
The contents of this Documentation are subject to the Public Documentation License Version 1.0 (the “License”); you may only use this Documentation if you comply with the terms of this License. A copy of the License is available at http://www.openoffice.org/licenses/PDL.html.
The Original Documentation is “OpenOffice.org’s Documentation of the Microsoft Excel File Format”.
The Initial Writer of the Original Documentation is Sun Microsystems, Inc., Copyright © 2003. All Rights Reserved. Contributor:風弈, Portions created by風弈are Copyright (C) 2018. All Rights Reserved.
See title page for Author contact and Contributors.
All Trademarks are properties of their respective owners.
1.1.2 基维百科
维基百科免责声明:
http://en.wikipedia.org/wiki/Wikipedia:General_disclaimer
1.2 摘要
本文档包含Microsoft Excel二进制文件格式的说明,包括所有可用的Excel版本
(对于Windows)从Excel 2.x到当前的Excel 2003。
该项目已于2001年6月启动,目前仍在进行中。在几个地方,“2do”这个词表示一个
文件的不完整部分。
1.2.1 项目状态
章节 | 内容 | 状态 |
---|---|---|
1.前言 | 公共信息 | 完成 |
2.文档结构 | 文档结构概述 | 完成 |
3.公式 | RPN令牌阵列的结构-所有令牌的详细描述 | 完成 |
4.工作表/工作簿流 | 由若干记录表示的复杂特征的抽象描述 | 进行中 |
5.工作表/工作簿记录 | 所有记录的详细描述 | 进行中 |
6.绘图对象 | 未开始 | |
7.图表 | 图表工作表和图表对象的内部 | 进行中 |
8.数据透视表 | 未开始 | |
9.更改跟踪 | 未开始 | |
10.工作区文档 | 进行中 |
1.2.2使用的术语,符号和格式
参考
对另一章的引用用一个小箭头表示:➜1.1。定义、例子、重要的段落
均显示在引用中
定义:
这是一个定义框的例子。
这是一个例子。
带有重要信息的文本段落。
- 数字和字符串
数值显示在几个数制中:
数制 | 标识符 | 例子 |
---|---|---|
十进制 | 无 | 1234 |
十六进制 | 尾部加H | 1234H |
二进制 | 尾部加2 | 10012 |
常量字符串包含在引号中。 它们可能包含特定的值(控制字符,不可打印
字符)。 这些值包含在尖括号中。
包含控制字符的字符串示例:“abcdef<01
H
>ghij”.
- 记录列表
记录列表以所需顺序显示一系列记录。 一个深灰色的矩形代表一个记录,一个光
灰色矩形代表一组记录。 这是一个代表一个特定功能的组,并且被引用
记录组名称,或者它是一组各种未指定的记录,在这种情况下无关紧要。
记录内容列表
•方括号内的数据偏移表示可能省略的记录内容(备注“可选(optional)”可能指出
出这个)。
•术语“未使用(Not used)”表示:忽略导入数据并在导出时写入零字节。 这同样适用
位字段中未被占用的位。
•术语“未知(Unknown)”描述具有固定但未知内容的数据字段。 在出口时,这些字段必须写成如下所示。
•在几个地方引入了一个变量,它表示该字段的值供以后使用。 最常见的
这是一个包含大小值的字段,稍后在记录内容列表的“大小”列中使用。 一个
例子可以在➜2.4中找到。算法列表
以伪代码给出的算法显示在具有浅灰色背景的框中。算法 算法示例
1) Command 1
2) Command 2
算法中使用的符号约定:
符号 | 说明 |
---|---|
command1 ; command2 | 两行命令在一行中,首先执行command1,然后执行command2 |
var ← value | 将值分配给变量var |
JUMP x) | 继续执行算法中的第x行) |
RETURN [value] | 返回指定的值,否则没有返回值返回 |
IF cond THEN command | 如果条件cond的计算结果为true,则执行命令 |
AND | 二进制与运算 |
OR | 二进制或运算 |
XOR | 二进制异或(独占或)运算 |
= <> < > <= >= | 用于条件执行的比较运算符 |
array[] | 由相同类型的元素组成的数组 |
array[0] | 数组array []的第一个元素(数组从零开始) |
1.3字节序
含有多于一个字节的所有数据项目,采用低字节序存储方法1。
这意味着最低有效字节首先被存储并且最高有效字节最后被存储。
这适用于所有数据类型,如16位整数,32位整数,浮点值和Unicode字符。
示例:将32位整数值13579BDF
H
转换为字节序列DFH
9BH
57H
13H
.
欲了解更多有关字节序的信息,请参阅:https://en.wikipedia.org/wiki/Endianness。