[从产品角度学EXCEL 01]-EXCEL是怎样运作的

这是《从产品角度学EXCEL》系列第二篇。

前言请看:从产品角度学EXCEL-系列0-为什么要关注EXCEL的本质

本文不接受无授权转载,如需转载,请先联系我,非常感谢。

1、EXCEL是怎么工作的

在序言里,我们大致讲了一下为什么要写这篇文章,以及其整体架构。而从这章开始,我们将简单看一下EXCEL是什么,以及它是怎么工作的。

从EXCEL的定义来说,它是一款用于处理数据的电子表格软件。当我们打开EXCEL时,看到的一大片方格子,就是excel所处理的主要对象——表格(spreadsheet)

基本上EXCEL的所有功能都是围绕着表格进行的。有用于存放数据的一个个单元格,有用来统计和计算单元格数据的excel内置函数,有对表格的一列或一行做的筛选与排序,还有各种数据统计与可视化的功能。

那么,在了解了excel处理的对象是表格及其里面的数据时,你有没有想过,当我们把大批量的数据导入到excel表格时,excel是怎样存储和调用这些数据的呢?它也会是以表格的形式,存储在计算机里,以便我们调用吗?难道开发excel软件的程序员们,在设计时就是在后台画了一个又一个方格子,等着我们按格子填数?

对上述的猜想,答案是否定的。

对于开发excel的人来说,计算机并没有那么五彩缤纷。

那 一个又一个的方格子,是程序员写了很多行代码,把各种功能组合出来以后形成的最终效果。当你回过头来再深入计算机的底层,你会发现每当你操作一个个方格 子,背后有一行行特定的代码解释了你的操作,转换成一串串01010101001给计算机,让它控制各微小电路的开关,最终回馈给你想要的内容。而这些代 码也好,0000111100010101也好,都是纯文本的。

于是我们可以这样说,excel在运作的过程中,在计算机的后台,是各式纯文本的信息在传输与运作。正因如此,当我们想要了解EXCEL是怎么运作的时候,我们可以从解读这些纯文本信息如何存放、解析里,一窥这程序的运作并了解EXCEL的本质。

那么回到我们刚刚的问题,数据在excel里是怎样被存储和调用的,这个自然也可以从纯文本的角度来解释。

我们来看看这个网页里的信息吧:

《微软Office Open XML文件格式介绍》:
https://msdn.microsoft.com/zh-cn/library/ms406049%28v=office.12%29.aspx

简单概括一下上面网页的内容,就是:

office系列的产品,都是用Office Open XML文件格式压缩存储的。

我们日常所用的一个个独立的xlsx文件,其实是一个个压缩文件。它们把若干个XML格式的纯文本文件压缩在一起,而EXCEL就是读取这些压缩文件的信息,最后给我们展现一个完全图形化的电子表格。

譬如说,当我们有一个EXCEL的文件,我们可以把它的后缀名从.xlsx改为.zip,右键解压缩后,就会出现一个文件夹。

文件夹里有_rels, docProps及xl三个文件夹。


xl文件夹里存放着这个excel文件的大部分主体内容。如theme文件夹里存放着这个excel的主题设置,sharedStrings里存放着各个
单元格里的信息,而worksheets文件夹里则记录着各个sheet之间如何互相调用。这些,都是以XML的文本格式存放在磁盘里的。

举个例子来说,假如我们在一个工作表里输入以下的字符串:

我们在excel里看到的是一个整齐的表格,但是在xl\sharedStrings.xml里,这些字符是以这样的文本形式被存储的:

excel会在后期用各种代码去读取这些xml里的纯文本文件,最后在图形化界面里以一个整齐的电子表格形式,把这些文本展示出来。

所以实际上,EXCEL对信息的储存,就是把各种各样的信息打上标签以后,以纯文本的形式存储在XML文件里。而当我们需要读取信息时,它通过调取这些文本的关系,把纯文本解码为我们看到的电子表格里的信息

我们去理解EXCEL怎么工作,其实就是理解这些纯文本信息是什么,它怎么被编译。这样,我们可以更轻松得接触EXCEL的本质,理解它是怎么被设计出来,会有什么功能。

于是,我们终于带出了这一系列教程的重点:从EXCEL的设计本质出发,去学习EXCEL

我们将沿着这些纯文本代表的信息,以及其分类,逐个去讲述包括:单元格的信息存储、EXCEL功能的应用、图表的特殊存在。敬请期待。



扩展阅读:

1、EXCEL是用C++语言开发的: https://www.zhihu.com/question/20378143

2、计算机是用0、1来存储数据的相关阅读:

一个博客上的解释: http://c.biancheng.net/cpp/html/2839.html 
《计算机科学概论》11版 第1章

3、wiki上对EXCEL的定义:https://en.wikipedia.org/wiki/Microsoft_Excel

4、微软Office Open XML文件格式介绍: 
https://msdn.microsoft.com/zh-cn/library/ms406049%28v=office.12%29.aspx

另外,正如上面文章所讲的,office open xml文件格式,给开发excel的人带来了太多便利。我们还可以搜一下用其他语言操作excel的人,是怎么利用这个文件格式的。有兴趣的可以先扩展阅读一下

还有什么不能做?——细谈在C#中读写Excel系列文章之一: 
http://www.cnblogs.com/jaxu/archive/2012/05/09/2491096.html

用 XmlReader 读取 Excel 2007 文件 
http://www.cnblogs.com/skyivben/archive/2007/09/23/903582.html

微信公众号:

时间: 2024-12-30 04:24:47

[从产品角度学EXCEL 01]-EXCEL是怎样运作的的相关文章

[从产品角度学EXCEL 00]-为什么要关注EXCEL的本质

前言 Hello 大家好,我是尾巴,从今天开始,在这里连载<从产品角度学EXCEL>的系列文章.本文不接受无授权转载,如需转载,请先联系我,非常感谢. 与世面上的大部分EXCEL教程不同的是,我们并不会太多关注于介绍EXCEL各个功能的细节,譬如表格怎么搭建.EXCEL有什么函数等等.这些知识点在各个教程里随处可见,各位只要有心,就可以很容易的找到. 相反,这系列的文章会更多关注于EXCEL这个产品,关注EXCEL的本质. 我们会尝试从一个产品设计,或者一个编程人员的角度来解剖EXCEL的内在

[从产品角度学EXCEL 03]-单元格的秘密

这是<从产品角度学EXCEL>系列——单元格的秘密. 前言请看: 0 为什么要关注EXCEL的本质 1 EXCEL是怎样运作的 2 EXCEL里的树形结构 或者你可以去微信公众号@尾巴说数 获得连载目录. 本文仅由尾巴本人发布于特定网站.不接受任何无授权转载,如需转载,请先联系我,非常感谢. 在讲了excel的树形结构之后,我们终于要进入正题,研究单元格的秘密了. 当我们打开excel的时候,首先映入眼帘的就是一大片格子,这就是单元格. 在excel里,单元格承担了几乎所有的存储信息的功能.你

[从产品角度学excel 04]-单元格的“衣服”

忘记发这里了..补发一下 这是<从产品角度学EXCEL>系列——单元格篇. 前言请看: 0 为什么要关注EXCEL的本质 1 excel是怎样运作的 2 EXCEL里的树形结构 3 单元格的秘密(文本/数字篇) 或者你可以去微信公众号@尾巴说数 获得连载目录. 本文仅由尾巴本人发布于特定网站.不接受任何无授权转载,如需转载,请先联系我,非常感谢. 抱歉之前因为有各种事情,一个多月没更新了,从今天开始恢复更新. 在前一章节里,我们通过对excel xml代码的阅读,发现在excel单元格里,文本

[从产品角度学EXCEL 02]-EXCEL里的树形结构

这是<从产品角度学EXCEL>系列第三篇. 前言请看: 0 为什么要关注EXCEL的本质 1 excel是怎样运作的 或者你可以去微信公众号@尾巴说数 获得连载目录. 本文仅由尾巴本人发布于特定网站.不接受任何无授权转载,如需转载,请先联系我,非常感谢. 2 EXCEL里的树形结构 这段时间,上海街边的树上陆陆续续长出了嫩芽,放眼望去有各种层次的绿色,格外好看.我们今天的话题,恰好也与树有关.只不过,树都是往天空伸展枝叶的,而我们这里讨论的‘树’,却是由根部出发,逐行逐行往下延展.伸展. 还记

服务器不装Excel读取Excel并转换DataTable

原来是用OleDb.4.0组件读取Excel,但是放到服务器后 傻了,服务器没装Excel ,而且领导说不可以装 没办法,只好自己重新找下代码 在CodeProject找到一个开源的dll,一阵欢喜啊,虽然是winform项目,但是主要是用他的类库所以提取一下后 自己研究后重新封装了一个类,运行 耶! 完美支持 需要Dome的同学下载后去研究下吧 地址:http://download.csdn.net/detail/jine515073/7266371 本人用 Excel 97-2003 工作表

在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能(转)

1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel ,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和 导出 . 该项目的GitHub地址是: https://github.com/Maatwebsite/Laravel-Excel . 本文我们将在Laravel中使用Laravel Excel简单实现Excel文件的导入和导出. 2.安装&配置 使用Composer安装依赖 首先在Laravel项目根目录

Microsoft.Office.Interop.Excel 操作 Excel

Microsoft.Office.Interop.Excel类库用于操作Excel,提供了丰富的类和函数,功能非常强大. 第一部分:类库简介 引用命名空间 using Excel = Microsoft.Office.Interop.Excel; 1,在使用类库之前,先总结以下几个类的用法 Application:Excel应用程序类,是Excel的引擎,new 一个实例. Excel.Application excelApp = new Excel.Application(); Workboo

从产品角度考虑优秀员工的评定

一个软件产品做的好不好,从用户角度至少会有三个因素:产品的价格.性能.服务(用户体验).以前很多用户往往只关注前面两个因素,现在的用户对产品的服务以及用户体验的重视程度已经远远高于前两项.就像我们到超市去购买消费品,如果你是个会过日子的人,那么性价比是你最重视,而不是哪样便宜买哪样.现在政府采购软件也是需要对各家供应商提供的产品进行综合评分,当然涉及到的因素不止上述三项,但是都包含上述三项. 接近年底,公司要对优秀员工进行评比.既然是评比免不了要进行员工投票,既然有投票肯定有权重的区分.事实上全

站在.NET的角度学安卓的草民笔记1

Java           ->        .NET 安卓          ->        winform/WPF 类继承Activity  ->     类继承 Form ①安卓的 如果android中你有2个Activity,可以从一个Activity跳到另一个Activity怎么搞 Intent t=new Intent(MainActivity.this,OtherActivity.class); startActivity(t); 使用Intent,专业术语叫 意图