DOCX 和 DOC 相比有哪些優點?

我覺得現在doc格式還是應用比較廣泛,微軟改了docx,那麼新的格式比起老的有什麼優點?


先Google了一個頁面,供參考
Difference Between DOC and DOCX

簡單的說,在doc中,微軟還是用二進位存儲方式;在docx中微軟開始用xml方式,docx實際上成了一個打包的壓縮文件(經眾多知友確認,為zip方式壓縮)。

下面這個是我解壓縮了一個doc文件得到的結果。沒有文件夾,都是沒有擴展名的文件碎片。

這個則是解壓縮docx文件得到的結果。有一個xml和包含其他信息的文件夾。

我也處理了一下xls和xlsx,結果類似
下面這個是xls的,因為文件啟用了宏,所以多了一個Marco的文件夾

xlsx和docx的結果非常類似,要不是xml的文件大小不同,我還以為貼錯圖了

ppt和pptx也結果類似,你可以自己試試。

docx(所有帶x的新文件格式)優點:
1. 同樣文件體積小
2. 對複雜對象處理更好,如公式編輯器,表格樣式,甚至可以直接在文件中呈現flash,視頻和音頻。
3. 更好的支持複雜光影和顏色
4. xlsx裡面對複雜公式支持也更好,單元格總數和其內容限制大了很多
5. 所以從***x文檔內提取原始圖片是很方便的,可以解壓出來。
歡迎評論補充

6. 優化了加密。@sunwear 「還有一個優點是加密方式更給力了,舉個例子,用知名office密碼爆破軟體advanced office password recovery破解docx或xlsx這類文檔在i7 3770處理器下每秒才100個。密碼夠強壯的話普通電腦基本解不出來,高級點的gpu設備難度也很大。」


新的格式更容易在各個平台被解析。
新的文件格式使用XML和zip技術,這些技術被大家所熟知,有相關經驗的開發人員比較多。解析XML和zip格式的軟體也非常多。而且原有的格式是複合文檔中的二進位碼流,這些格式怎麼解析會讓開發人員費一番腦筋。而新格式中只需要將zip壓縮數據解壓出來,解析其中的png圖片,XML描述等等就可以了,清晰很多,也更容易讓獨立的應用程序去對素材做加工處理。原有的格式使用COM體系下的複合文檔,而COM專業開發人員比較難找也比較貴,而且解析工具主要是從Windows附帶的功能中來,軟體資源不如XML和zip這樣的技術豐富。舉例來說,C#/.NET平台至今仍然沒有直接的複合文檔支持,需要通過interop調用本地的Windows API來訪問複合文檔的內容,這意味著甚至對微軟來說老格式支持都會造成資源浪費,老格式在需要將文檔放到雲平台供包括移動平台在內的客戶端訪問的今天顯得不合時宜。

在實踐中,新格式下文件的體積更小了。
原格式直接使用複合文檔,並沒有對文件內容做壓縮。

新的格式更輕便,功能限制更少。
複合文檔對磁碟中的文件做了一些假設,部分是為了適應90年代時個人電腦內存和磁碟存儲能力比較低的現實,部分是為了保證文檔在編輯中有比較強大的互操作能力。比如為了保證文檔能互相編輯,你不能同時打開一個文件的2個副本進行編輯,因為邏輯上文檔只有一個,它需要實時與其他文檔實現互操作,即使2個副本會同步更新也不太合邏輯。微軟在那個年代設計的以文檔為中心的理念已經不太適合今天了。今天的做法是將應用放到雲端,文檔間的互操作可以在雲端進行,應用也可以自行升級,添加功能或者在應用間交換數據,這些實現完全可以取代微軟原先的在程序中利用組件對文檔做互操作的設計。

關於複合文檔文件格式可以參考msdn文檔 Compound Documents (COM)


docx壓縮率比doc大得多,你可以用同樣的內容分別保存成兩個格式試一下大小上的差別;
docx可以把擴展名改為zip,打開壓縮包可以看到文檔的各種信息,還可以直接提取裡面的media文件夾,包含了文檔所有的媒體文件;
上面說的公式;
界面的問題,有人喜歡有人不喜歡。


二進位文檔一旦損壞很難修復,xml格式比較健壯,損壞後容易修復。


office97-2003的各種文件格式(doc、xls等)都是BIFF8,一種二進位的B+樹。裡面都是一個個是數據塊。文件有文件頭,數據塊有數據頭。頭裡有指針和塊內數據的索引。通過指針把各個塊串起來,整個結構就是一棵樹。
協議連接http://www.openoffice.org/sc/compdocfileformat.pdf

office2007以後的格式是ooxml
open office xml
其實就是把文檔的各部分拆解開,分別存起來,然後zip壓縮。docx改擴展名為zip,可直接解壓。
文檔結構和內容是xml
引用數據是xml
如果引用了圖片或excel,解壓的文件夾下會直接有這些東西。而不是以前biff8格式的什麼東西都要揉碎了一塊塊的二進位方式掛到樹上。這樣新的處理方式更簡潔明了。也對各種第三方開發者去理解和兼容ms office有益處。
ooxml規範 Standard ECMA-376
ooxml sdk 面向 Office 開發人員的 Open XML


推薦閱讀:

非計算機專業想從零開始學編程該如何進行?
學IT建議看書還是跟著視頻學?
是買ps4+顯示器還是攢一個電腦?
Python 3 正在毀滅 Python 嗎?
網路上傳聞的Shadow Web是不是真的?為什麼存在這麼多的恐怖經歷?

TAG:微軟Microsoft | 計算機 | MicrosoftWord | 數碼 | IT行業 |