掀开面纱,看看Excel文件到底是什么

引子:从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中可以找到工作表Sheet2的r:id为rId3。

接着,查看子文件夹_rels中workbook.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中的内容:

<c r="A1" t="s">

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

<v>4</v>

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

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

图9

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

使用XML文件操作Excel文档

在单元格中添加文本

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

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

图10

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

图11

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

图12

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

图13

小结

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

(0)

相关推荐

  • 【Excel技巧】一个非常实用的小技巧,得到所有工作表名称列表

    这是一个非常实用的技巧,不用写代码,就可以获得所有工作表的列表,还可以获得文件夹下所有文件的列表 缘起 其实这个问题我经常会遇到,也经常有朋友问起,我也一直想写篇文章介绍一下这个技巧,却总是想不起来写 ...

  • n多个Excel如何合并?

    关于表格合并,一般会有3种情况: (p.s:请注意工作簿跟工作表的区别) 将一个 Excel 工作簿中的多个工作表合并成一个工作表 将多个 Excel 工作簿合并成一个工作簿 将多个 Excel 工作 ...

  • 一定要学!Excel文件未保存恢复的小技巧~

    如果不小心你的文件未保存,就被关闭了,可通过文件 - 信息 - 管理工作簿 - 恢复未保存的工作簿,来解决该问题. 打开最新的文件,点击另存为,即可解决. 在Excel当中,还有很多类似小技巧. 1. ...

  • 教学管理菜鸟成长记40-找不同下集之两个EXCEL文件的差异

    关键词:EXCEL2016:SpreadshCompare插件:EXCEL文件比较:操作难度***** 早上8点,二师兄准时开机,因为他知道小菜肯定又会一大早就紧急求助,果然事情的发展就如同睿智的二师 ...

  • 怎么把100多个EXCEL文件合并成一个

    2020-07-10·策划专员 可以通过更改excel代码来合并多个文件. 详细步骤: 1.新建一个文件夹. 2.将要合并的表格放到里面. 3.新建一个表格. 4.用excel打开. 5.右击Shee ...

  • 怎么在ppt里加入一个excel文件

    如何在PPT里加入一个excel文件呢?下面是具体的操作方法. 打开一个PPT文档. 单击工具栏上的插入. 单击选择附件. 在出现的插入对话框中,单击选中需要插入的excel文件. 单击打开即可在PP ...

  • 在两个Excel文件之间传递数据而无须打开Excel文件

    原创 范吉 完美Excel 2018-10-11 经常有人需要从关闭的工作簿文件中取值,省掉打开工作簿的操作.而此处介绍的技巧,所涉及到的工作簿文件都不需要打开,就可以完成将某工作簿文件中的数据迁移到 ...

  • 为何双击Excel文件时报错而不是直接打开?

    Q:昨天都好好的,不知道动了什么,今天双击Excel文件时不能打开了,老是报错,如图1所示,非要先启动Excel程序,然后单击"文件--打开",导航到要打开的文件才能正常打开.为什 ...

  • 如何不打开Excel文件删除行?

    Q:我有大约1000多个Excel文件(扩展名为xlsx),这些文件都只有1个工作表且具有相同的工作表结构,我想在不打开这些Excel文件的前提下删除其工作表的第1至3行,如何快速实现? A:可以使用 ...

  • 如何让用户输入密码后才能使用Excel文件

    Q:有没有一种方法可以通过给用户提供密码来许可用户使用Excel文件?例如,在没有到规定的日期之前,可以正常使用,超过规定日期,则需要输入密码,如果密码不正确,将删除Excel文件. A:可以在工作簿 ...

  • Excel-VBA批量转换Excel文件为PDF

    应用场景 批量将excel文件转换为PDF格式文件 知识要点 1:Workbooks.Open  文件路径,打开文件路径的文件 2:GetExtensionName 方法  返回一个包含路径中最后部件 ...