[從產品角度學excel 04]-單元格的「衣服」

忘記發這裏了。。補發一下javascript

這是《從產品角度學EXCEL》系列——單元格篇。html

前言請看:java

0 爲何要關注EXCEL的本質微信

1 excel是怎樣運做的app

2 EXCEL裏的樹形結構佈局

3 單元格的祕密(文本/數字篇)學習

或者你能夠去微信公衆號@尾巴說數 得到連載目錄。字體

本文僅由尾巴本人發佈於特定網站。不接受任何無受權轉載,如需轉載,請先聯繫我,很是感謝。網站

 


抱歉以前由於有各類事情,一個多月沒更新了,從今天開始恢復更新。spa

在前一章節裏,咱們經過對excel xml代碼的閱讀,發如今excel單元格里,文本和數字並非一回事,而數值模式卻僅僅是excel 數字的一種表現模式。

接 下來,咱們繼續研究excel單元格的外在表現,如字體、顏色、邊框、合併單元格等。基本上,每個單元格的格式都是能夠自定義定製的。咱們能夠爲所欲爲 對單元格進行合併、調色、設置大小,就像在一個畫布上自由做畫通常。而這種高度可定製性,也便是excel的魅力所在。

咱們接下來要作的,就是透過現象看本質,經過對單元格外觀的研究,來串聯起咱們對單元格的理解。

一、由「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就是靠着這種引用的關係,把各個獨立的元素串通在了一塊兒,造成一個鬆散又有聯繫的產品總體。

二、從「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

相關文章
相關標籤/搜索