什么是一 .XLS 文件?
带有 XLS 扩展名的文件代表 Excel 二进制文件格式。此类文件可以由 Microsoft Excel 以及其他类似的电子表格程序(如 OpenOffice Calc 或 Apple Numbers)创建。 Excel 保存的文件称为工作簿,其中每个工作簿可以有一个或多个工作表。数据在工作表中以表格形式存储和显示给用户,可以跨越数值、文本数据、公式、外部数据连接、图像和图表。 Microsoft Excel 等应用程序可让您将工作簿数据导出为多种不同格式,包括 PDF、CSV、XLSX、TXT、HTML、XPS 等等。随着 Microsoft Excel 2007 的发布,XLS 文件格式被更开放和结构化的格式 XLSX 所取代。最新版本仍然支持创建和读取 XLS 文件,尽管 XLSX 是现在的首选。
历史简介
XLS 由 Microsoft 创建,用于与 Microsoft Excel 一起使用,也称为二进制交换文件格式 (BIFF)。 1987 年首次引入此文件类型,使其成为 Excel for Windows 的一部分。XLS 文件格式规范于 2008 年 6 月作为修订版 1 首次公开。此后,规范不断更新并提供最新修订版截至 2018 年 8 月,标记为修订版 8.0。不同版本的 XLS 文件格式的简史如下:
- 版本 7.0(随 office 95 发布):此版本的 excel 是所有版本中最强大和最快的,并且内部流重写已更新为 32 位。
- 第 8 版(随 office 97 发布):VBA 作为标准语言引入,并首次在此版本中加入了删除的自然语言标签。它还首次引入了回形针办公助理。
- 版本 9(随 office 2000 发布):版本 9 中只有微小的变化,其中回形针办公室助理可以同时持有多个以前不可能的对象。
- 版本 10(随 office XP 发布):此版本没有任何明显的改进。
- 版本 11(随 office 2003 发布):版本 11 中的主要更新,excel 2003 是引入了新表格。
XLS 文件格式规范
如 [MS-CFB] 中所述,数据以复合文件的形式作为二进制流排列在 XLS 文件中。通过使用存储、流和子流将数据存储在复合文件中,这些存储、流和子流包含有关工作簿内容和结构的信息,包括工作簿数据,例如工作表定义。每个流或子流包含一系列二进制记录。每个二进制记录都包含零个或多个包含工作簿数据的结构化字段。本节简要概述了 XLS 文件结构,但有关详细的文件格式规范,必须查阅 [XLS 文件格式规范](https://msdn.microsoft.com/en-us/library/cc313154(v#office) .12).aspx) 由 Microsoft 提供的文档。
流和子流####
工作簿由工作簿流表示。工作簿中的每个工作表都由子流表示。此外,它具有跟随全局子流的图表表子流、宏表子流或对话框表子流。每个包含工作簿数据的二进制流或子流必须写入一系列二进制记录。
#### 记录 ####
工作簿中有关功能的信息存储为可变长度字节序列的记录。二进制记录由以下三个部分组成:
记录类型: 记录类型是一个两字节的无符号整数,它指定记录指定的信息类型以及特定于该记录的记录数据的结构是如何排序和结构化的。记录类型值必须是来自记录枚举(第 2.3 节)的值,或者记录必须使用未来的记录架构(第 2.1.6 节)。
记录大小:记录大小是一个两字节无符号整数,它指定指定记录数据总大小的字节数。记录大小必须大于或等于 0,并且必须小于或等于 8224。
记录数据: 记录数据组件包含与特定记录类型相对应的字段,并构成记录的其余部分。给定记录类型的字段顺序和结构在该记录类型的相应部分中指定。记录数据组件的大小必须等于记录大小。记录数据组件中的字段可以包含简单值、值数组、多个字段的结构、字段数组和结构数组。
单元格表####
单元格是工作簿的基本块,用于存储工作簿内容,如文本、公式和数字数据。单元通过称为单元表的数据结构维护存储数据的记录。单元表本身存储在符合规范文档中定义的 CELLTABLE 规则的记录序列中。它由一系列行块组成,其中行以行块的形式排列。每个行块包含从包含数据的第一行到包含数据的最后一行的行。
数据或行格式保存在每个行块的行记录中。每个包含数据或单个单元格格式的单元格都由一条记录表示。与单元格关联的格式可以来自单个单元格格式、行格式、列格式或默认单元格格式。格式化的优先顺序是具有最高优先级的单个单元格格式化,然后是行格式化,然后是列格式化,最后是默认单元格格式。不包含数据且不包含单个格式的单元格不会被保存。
公式####
公式是单元格中的一系列值、单元格引用、名称、函数或运算符,它们共同产生一个新值。公式存储在称为“解析表达式"的标记化表示中。解析后的表达式在运行时转换为文本公式,以供显示和用户编辑。单元格公式由公式记录指定。数组公式由数组记录指定。共享公式由 ShrFmla 记录指定。
图表####
图表工作表指定图表、以可视形式显示数据或数据集之间关系的图形,以及图表数据缓存,图表数据中使用的数据的本地副本丢失或链接到外部数据源被破坏。该图表指定一个或两个轴组、一组图表数据绘制的轴,以及图表中指定的一组系列、趋势线和误差线。每个轴组指定一到四个图表组,这些图表组指定用于显示数据的可视化类型。每个系列、趋势线和误差线都指定一个与之关联的图表组。
元数据####
元数据是与特定单元格或其内容相关联的附加数据。元数据记录在 BIFF8 中仅用于将来的扩展目的。
数据透视表####
数据透视表是一种汇总源数据以了解该数据分布情况的机制。在数据透视表中,源数据的适用列成为可用于汇总数据的字段。当数据透视表的源数据是 OLAP 源数据时,OLAP 层次结构和其他一些 OLAP 实体成为数据透视表中的字段。 数据透视表有两个主要部分,数据透视缓存和数据透视表视图。可以有多个基于单个非 OLAP PivotCache 的数据透视表视图。
样式####
本概述描述了如何为工作表 (1) 中的单元格指定格式和保护信息。单元格格式由几组属性组成:
- 字体属性(粗体、斜体、字体颜色、字体大小等…)
- 填充属性(前景色、背景色、图案、渐变等……) *对齐属性(左,中,右对齐等…)
- 边框属性(左、右、上、下、粗细、颜色等)
- 数字格式属性(日期、时间、小数位数等…) *保护属性(锁定,隐藏等……)
这些属性作为一个整体描述了特定单元格的显示和打印方式。