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

忘记发这里了。。补发一下

这是《从产品角度学EXCEL》系列——单元格篇。

前言请看:

0 为什么要关注EXCEL的本质

1 excel是怎样运作的

2 EXCEL里的树形结构

3 单元格的秘密(文本/数字篇)

或者你可以去微信公众号@尾巴说数 获得连载目录。

本文仅由尾巴本人发布于特定网站。不接受任何无授权转载,如需转载,请先联系我,非常感谢。

 


抱歉之前因为有各种事情,一个多月没更新了,从今天开始恢复更新。

在前一章节里,我们通过对excel xml代码的阅读,发现在excel单元格里,文本和数字并不是一回事,而数值模式却仅仅是excel 数字的一种表现模式。

接 下来,我们继续研究excel单元格的外在表现,如字体、颜色、边框、合并单元格等。基本上,每一个单元格的格式都是可以自定义定制的。我们可以随心所欲 对单元格进行合并、调色、设置大小,就像在一个画布上自由作画一般。而这种高度可定制性,也即是excel的魅力所在。

我们接下来要做的,就是透过现象看本质,通过对单元格外观的研究,来串联起我们对单元格的理解。

1、由“style”控制的单元格外观

在上一章节里,我们在excel里输入了一个日期2009/7/7和一个百分数0.55%。

在阅读excel xml源文件里,我们发现它们还是以数值的形式储存在单元格里,只是“s”引用的数字不对。

<c r="F2" s="12"><v>40002</v></c>
<c r="I2" s="13"><v>5.4999999999999997E-3</v></c>

事实上,我们可以把这个s理解为单元格的样式(style)。这个单元格里引用的12/13,其实就是代指styles.xml文件里,第12/13个xf元素。

第十二个xf--日期
<xf numFmtId="14" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
第十三个xf-日期
<xf numFmtId="10" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1" applyAlignment="1">

我们可以看到,在这个xf元素里,规定了字体fontID、数值格式numFmtId、边框borderId、对齐方式applyAlignment等等的属性。而正是这些元素,构成了我们看到的单元格的外观。

同时有趣的是,在这个xf元素里,fontID、numFmtId、borderId等等,也是用数字去引用各个相应元素的顺序。我们可以在同一个styles.xml文件里,找到如:

<font><sz val="9"/><name val="宋体"/><family val="3"/><charset val="134"/><scheme val="minor"/></font>
<fill><patternFill patternType="solid"><fgColor rgb="FFFFFF00"/><bgColor indexed="64"/></patternFill></fill>

等等的元素。xf里的font=’0’, font=’1’,其实也就是在引用这些元素的顺序而已。

形象一点来说,对于单元格的代码关系,我们可以画出这样的一个关系图来:

01.png

如果单独解读styles.xml的结构,我们又可以画出这样的一个关系图来:

02.jpg

事实上,excel就是靠着这种引用的关系,把各个独立的元素串通在了一起,形成一个松散又有联系的产品整体。

2、从“style”到实际应用

在过了一下excel单元格的xml原理以后,我们回到excel的基本界面,来看看工程师是怎样布局与分布这些功能块的。

我们在excel的“开始”菜单里,可以看到关于单元格格式的大部分功能:

03.png

这些功能,大体上是与excel styles.xml里,所展示的单元格样式组合相吻合。

对于刚接触excel界面的小白来说,去尝试给单元格变个颜色、居中对齐、合并单元格、换行等等,都是非常容易的一件事情。这些东西,完完整整得都列在了excel的开始界面里,我们只要耐得下心来去与这些功能块沟通,就能轻松做出像下图这样,有多种样式的单元格。

04.png

这种通过“阅读”excel的产品界面,从而理解这个产品的设计,是从结果导向理解产品设计原理的最佳渠道。

一般做网页设计、软件开发等等,都是从最终结果出发,在设计出原型后,再逐个逐个模块进行开发组装的。软件的操作模型,往往凝聚了最多的设计精华。因此,在学习excel时,学会“阅读”excel的产品界面,可以达到事半功倍的效率。

但是需要注意的是,在读熟excel表面的功能布局以后,适当了解一下它底层的原理,能够更好的理解日常操作中会遇到的问题

1)为什么我们可以选择性粘贴单元格的数值or带格式粘贴?

05.png

06.png

在我们复制单元格的值到另一个单元格时,我们可以选择要粘贴的方式,如只粘贴数值,只粘贴公式,或者数值公式一起粘贴。

在这里,它是把单元格拆分为了:值、公式、格式、批注等基本部分。这就类似于我们通过xml看到的, value, formula, styles等。就如上文所说,这些部件在excel文件的xml代码层是分开储存,它们共同构成了单元格。

选择性粘贴,其实就是在告诉电脑,在这一次复制与粘贴过程中,我们是否需要把单元格格式引用的数值也复制过来,是否需要引用特定序列的批注,以及是否只复制里面特定格式的特定部件(如只复制边框,或者只复制合并条件等等)

理解了单元格是”装配“而成的,我们就能比较好的理解“选择性粘贴”了。

2)什么是“格式刷”?

07.png

当我们理解选择性粘贴是让我们选择复制一个单元格的哪个组件后,我们也能比较容易理解什么是单元格的“格式刷”。

本质上,格式刷就是把一个单元格引用的styles数字,原封不动得赋予另一个单元格。通过修改s=’0’,实现格式的变动,而不影响单元格的值。

3)在同一个窗口打开的excel,共同分享了一套样式

对于excel2010/2013的用户,通过开始菜单打开新的excel窗口,可以实现各个excel之间是互相独立,即使一个excel死机了,另外一个也能保持正常的状态。 (细节请见微软的文章,方法二: https://support.microsoft.com/zh-cn/kb/2227598

00.png

然而我们会发现,通过这种方式打开的独立的excel窗口,当我们在其中一个excel里复制若干单元格到另一个excel时,我们往往只能复制单元格的“值”,而无法把格式/公式一起复制过去。

事 实上,当我们在同一个窗口打开若干个excel时,我们实际上是在计算机的某一个部分,把若干个excel的样式组合在一起阅读与排序。然而对于不同的窗 口打开的excel,因为它们之间彼此独立,样式并没有随着复制与粘贴而过去,当我们进行不同窗口之间的复制与操作时,我们其实只进行了单元格值的转变。

4)网页复制数据时,不同的粘贴速度

同理,这个可以解释如:

从word、html等等复制表格到excel时,往往要花费比较长的时间,或者只能复制值到excel里。因为excel要进行一个格式的转化,有时候由于兼容问题还失败了。

当 我们要从网页复制一个有各种javascript、脚本超链接的文本到excel单元格时,稍不注意就要花费很长时间(格式转换)。但是若我们直接在单元 格文本框里键入文字内容,excel就默认只复制单元格的文本,不进行任何转换。速度会很快,而且不会把各种脚本都复制进来

譬如我们从京东商品描述页复制一整块信息:

08.png

左侧为在单元格里直接粘贴,它反映比较慢,进行了很多格式的转换。
而右侧为在文本框里直接复制网页文字,最后所有内容都集中在了一个单元格里,以纯文本的形式,速度极快。

09.png

10.png

往往当我们不想复制太多格式时,直接转为文本复制,或者直接在文本框里键入文字,是一个比较快的方法。

综上,在理解了“格式”仅仅是单元格的一个组成部分后,我们就能比较深刻地解释一些excel疑难问题。可以从产品角度学习excel了。

 


欢迎各位在评论里补充你们看完本章后,想到的相关问题,定期补充上去:)

接下来探讨:合并单元格、行与列等等话题。

欢迎扫码关注我的微信公众号

logo.png

posted @ 2016-06-29 23:38  尾巴AR  阅读(325)  评论(0编辑  收藏