[从产品角度学excel 04]-单元格的“衣服”
忘记发这里了。。补发一下
这是《从产品角度学EXCEL》系列——单元格篇。
前言请看:
或者你可以去微信公众号@尾巴说数 获得连载目录。
本文仅由尾巴本人发布于特定网站。不接受任何无授权转载,如需转载,请先联系我,非常感谢。
抱歉之前因为有各种事情,一个多月没更新了,从今天开始恢复更新。
在前一章节里,我们通过对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’,其实也就是在引用这些元素的顺序而已。
形象一点来说,对于单元格的代码关系,我们可以画出这样的一个关系图来:
如果单独解读styles.xml的结构,我们又可以画出这样的一个关系图来:
事实上,excel就是靠着这种引用的关系,把各个独立的元素串通在了一起,形成一个松散又有联系的产品整体。
2、从“style”到实际应用
在过了一下excel单元格的xml原理以后,我们回到excel的基本界面,来看看工程师是怎样布局与分布这些功能块的。
我们在excel的“开始”菜单里,可以看到关于单元格格式的大部分功能:
这些功能,大体上是与excel styles.xml里,所展示的单元格样式组合相吻合。
对于刚接触excel界面的小白来说,去尝试给单元格变个颜色、居中对齐、合并单元格、换行等等,都是非常容易的一件事情。这些东西,完完整整得都列在了excel的开始界面里,我们只要耐得下心来去与这些功能块沟通,就能轻松做出像下图这样,有多种样式的单元格。
这种通过“阅读”excel的产品界面,从而理解这个产品的设计,是从结果导向理解产品设计原理的最佳渠道。
一般做网页设计、软件开发等等,都是从最终结果出发,在设计出原型后,再逐个逐个模块进行开发组装的。软件的操作模型,往往凝聚了最多的设计精华。因此,在学习excel时,学会“阅读”excel的产品界面,可以达到事半功倍的效率。
但是需要注意的是,在读熟excel表面的功能布局以后,适当了解一下它底层的原理,能够更好的理解日常操作中会遇到的问题
1)为什么我们可以选择性粘贴单元格的数值or带格式粘贴?
在我们复制单元格的值到另一个单元格时,我们可以选择要粘贴的方式,如只粘贴数值,只粘贴公式,或者数值公式一起粘贴。
在这里,它是把单元格拆分为了:值、公式、格式、批注等基本部分。这就类似于我们通过xml看到的, value, formula, styles等。就如上文所说,这些部件在excel文件的xml代码层是分开储存,它们共同构成了单元格。
选择性粘贴,其实就是在告诉电脑,在这一次复制与粘贴过程中,我们是否需要把单元格格式引用的数值也复制过来,是否需要引用特定序列的批注,以及是否只复制里面特定格式的特定部件(如只复制边框,或者只复制合并条件等等)
理解了单元格是”装配“而成的,我们就能比较好的理解“选择性粘贴”了。
2)什么是“格式刷”?
当我们理解选择性粘贴是让我们选择复制一个单元格的哪个组件后,我们也能比较容易理解什么是单元格的“格式刷”。
本质上,格式刷就是把一个单元格引用的styles数字,原封不动得赋予另一个单元格。通过修改s=’0’,实现格式的变动,而不影响单元格的值。
3)在同一个窗口打开的excel,共同分享了一套样式
对于excel2010/2013的用户,通过开始菜单打开新的excel窗口,可以实现各个excel之间是互相独立,即使一个excel死机了,另外一个也能保持正常的状态。 (细节请见微软的文章,方法二: https://support.microsoft.com/zh-cn/kb/2227598 )
然而我们会发现,通过这种方式打开的独立的excel窗口,当我们在其中一个excel里复制若干单元格到另一个excel时,我们往往只能复制单元格的“值”,而无法把格式/公式一起复制过去。
事 实上,当我们在同一个窗口打开若干个excel时,我们实际上是在计算机的某一个部分,把若干个excel的样式组合在一起阅读与排序。然而对于不同的窗 口打开的excel,因为它们之间彼此独立,样式并没有随着复制与粘贴而过去,当我们进行不同窗口之间的复制与操作时,我们其实只进行了单元格值的转变。
4)网页复制数据时,不同的粘贴速度
同理,这个可以解释如:
从word、html等等复制表格到excel时,往往要花费比较长的时间,或者只能复制值到excel里。因为excel要进行一个格式的转化,有时候由于兼容问题还失败了。
当 我们要从网页复制一个有各种javascript、脚本超链接的文本到excel单元格时,稍不注意就要花费很长时间(格式转换)。但是若我们直接在单元 格文本框里键入文字内容,excel就默认只复制单元格的文本,不进行任何转换。速度会很快,而且不会把各种脚本都复制进来
譬如我们从京东商品描述页复制一整块信息:
左侧为在单元格里直接粘贴,它反映比较慢,进行了很多格式的转换。
而右侧为在文本框里直接复制网页文字,最后所有内容都集中在了一个单元格里,以纯文本的形式,速度极快。
往往当我们不想复制太多格式时,直接转为文本复制,或者直接在文本框里键入文字,是一个比较快的方法。
综上,在理解了“格式”仅仅是单元格的一个组成部分后,我们就能比较深刻地解释一些excel疑难问题。可以从产品角度学习excel了。
欢迎各位在评论里补充你们看完本章后,想到的相关问题,定期补充上去:)
接下来探讨:合并单元格、行与列等等话题。
欢迎扫码关注我的微信公众号