分享

Excel揭秘6:掀开面纱,看看Excel文件到底是什么

 江上向东数峰青 2017-09-08

 

引子:从Excel 2007开始,Microsoft采用了新的文件格式,称为开放的XML文件格式,很好地改进了文件和数据管理、数据恢复和可交互能力。现在,任何支持XML的应用程序都能访问和处理Excel文件信息,即便在系统没有安装Office软件时,也可以查看文件的内容。

 

认识Excel文件

我们先准备一个Excel文件。

新建一个Excel工作簿,输入数据、绘制图表、放置图片、形状和控件、输入VBA代码,将其命名为ExcelFile.xlsm,如下图1所示。

1

 

接着,关闭该工作簿。

然后,试试为该工作簿添加zip扩展名——ExcelFile.xlsm.zip

发生了什么?

Excel文件变成了一个压缩文件。下图2展示了这个过程。

 2

 

可以看出,Excel文件实际上是一个压缩文件包。

每个文件包由许多XML文件组成,Microsoft将这些文件称作“部件”。这些部件通过定义在不同的XML文件里的关系联系在一起。

如上图2所示,该Excel工作簿文件包中包含了3个根文件夹和1个文件,它们存储着文件的组成结构关系、工作簿数据、文档设置信息等内容。

 

每个文件夹中的子文件夹或文件如下图3所示。

 3

 

_rels文件夹

包含一个名为.rels的文件,存储着Excel文件包关系的信息。有三个关系属性:

  • 属性Id为任意的字符串,但必须唯一。

  • 属性Type表示关系的类型。

  • 属性Target指定包含关系的目标文件夹和文件。

 

docProps文件夹

包含各种XML文件,描述文件属性和应用程序设置。该文件夹中至少有一个名为app.xml的文件和一个名为core.xml的文件,包含Excel文件的元信息,例如文档作者、创建时间和修改时间。

 

xl文件夹

包含文件的核心部分。根据工作簿的具体内容,含有一些子文件夹,以及工作簿设置的XML文件。如果工作簿中含有VBA代码,那么文件夹中还有以bin为扩展名的二进制文件。

_rels子文件夹:关系文件workbook.xml.rels定义了工作簿、数据和格式部件的关系。

charts子文件夹:包含图表设置的XML文件。

chartsheets子文件夹:包含工作簿中每个图表数据的XML文件。

drawings子文件夹:包含工作簿中形状、图片、图表数据及关系的XML文件。

media子文件夹:包含内嵌的媒体文件,如JPG文件、GIF文件等。

theme子文件夹:包含工作簿主题的数据的XML文件。

worksheets子文件夹:包含工作簿中每个工作表的XML文件。

此外,如果工作簿中有ActiveX控件、表等,还会有下列子文件夹:

activeX子文件夹:包含控件设置的XML文件。

diagrams子文件夹:描述工作簿中形状(SmartArt)的XML文件。

tables子文件夹:包含带有每个表的数据的XML文件。

除了一些子文件夹外,还有一些单独的XML文件。

 

[Content_Types].xml文件

列出了包括在Excel文件包中其它部件的内容类型。

 

了解XML文件的内容

以上文列举的workbook.xml文件为例,其内容如下图4所示。

 4

在这个文件中,可以找到每个工作表对应的id号,即r:id。如果想要对某个工作表进行操作,那么可以先找到该工作表的r:id

例如,假设想要在工作表Sheet2中添加内容,则需要找到包含该工作表内容的xml文件。

首先,从图4中可以找到工作表Sheet2r:idrId3

接着,查看子文件夹_relsworkbook.xml.rels文件的XML代码,如图5所示。

 5

可以找到Id值为“rId3”对应的工作表XML文件为sheet2.xml

然后,在子文件夹worksheets中找到sheet2.xml,如下图6所示,其对应着工作表Sheet2

 6

 

工作表Sheet2中的内容如下图7所示。

 7

 

sheet2.xml文件的内容如下图8所示。

 8

工作表Sheet2中单元格A1的内容在哪里呢?找到图8中的内容:

可以知道单元格A1中包含字符串(t=”s”),下一行:

4

告诉我们需要在文件夹“xl”中名为sharedStrings.xml的文件里查找项目的索引数值为4

下图9所示为文件sharedString.xml的内容:

 9

看看该文件的顶部的红色下划线部分,表明该工作簿中共有5个唯一字符串。由于索引值以0为基数,而我们要查找的索引值是4,因此需要找到该文件中第5个“”项,如上图9中的红色方框部分。

 

使用XML文件操作Excel文档

在单元格中添加文本

在工作表Sheet2中添加新的文本数据。

首先,修改文件sharedStrings.xml顶部的字符串数,将5修改为6,如图10所示。

 10

接着,在该文件中添加新字符串,如图11所示。

 11

然后,修改文件sheet2.xml,以添加含有新字符串的行,如图12所示。

 12

添加文本数据后的工作表Sheet2如下图13所示。

 13

 

小结

在这里,我只是很粗浅地介绍了Excel文件格式以及一些相关内容。关于XML文件格式还有很多丰富的内容,实现很多实用且强大的功能,值得我们来发掘。


 

本文属原创文章,转载请联系我(xhdsxfjy@163.com)或者注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多