微軟沒有開源office,那wps之類的軟體是如何兼容微軟的格式的呢?

沒有開源office那是不是得通過逆向office來分析出doc,xls之類的文件結構呢?

如果不是的話,早期doc,xls之類的文件格式編碼,wps的開發者是怎麼分析出來的呢?

————————————————

先有wps的。


年輕人還是圖樣啊,當年兼容是雙向的一個協議,然而這個協議很悲慘地導致WPS的涼涼……

後來的兼容則基本上是靠微軟私有格式的開放文檔了,就是 @vczh 輪子哥 答案里說的那個


因為文檔是公開的:Technical Documents,譬如說:

MSDN上有幾乎所有微軟自己的私有格式的文檔。你只要有錢僱人看完,你自己也可以寫一個來兼容Word的格式。


  • WPS 發佈於 1988 年春,
  • Office 發佈於 1990 年底。

之前的 WPS 是求伯君的 WPS,而現在的 WPS 是雷軍的 WPS。

兩人第一次碰面,這個「全身名牌,言談舉止有大家風範」的人立刻鎮住了雷軍,「我永遠也忘不了那一天」。雷軍去了珠海金山實習,成為金山第 6 名員工,後來他在金山招聘上寫下:「求伯君的今天就是我們的明天」。


當年求伯君獨自一人開發出 WPS,目標是為了取代 WordStar,當時非常火的文字處理軟體。

開發過程中曾三次肝炎發作,最終在賓館裡,求伯君 1 個人在 386 機器上敲出了 10 萬行代碼才有了 WPS。每年賣出 3 萬多套,幾乎佔據了 90% 的市場。

當時各種列印店都使用 WPS,打字員也只會五筆和 WPS。可以說是 DOS 時代中文文字處理的輝煌。

1996 年,微軟主動找到了金山公司,微軟希望金山將 WPS 格式與微軟共享,雙方簽署了一份協議——雙方通過中間層 RTF 格式來互相讀取對方的文件。

後來的 Office 已經實現了所見即所得的編輯系統,但是 WPS 依然處在 DOS 時代的界面。再加上中國的盜版橫行,幾乎所有的盜版 Windows 系統都自帶了 Office 軟體。於是 Office 慢慢打開了中國市場,很多計算機的教材也開始使用 Office 軟體做教學。

和微軟的對抗導致金山公司幾近破產,一度資金緊張,後來求伯君 200 萬元賣掉了自己的別墅,重鑄了 WPS97 的輝煌。即使如此也已經很難再對抗 Office 了。

2002 年,雷軍向求伯君提出了用 3 年時間和 3500 萬重寫 WPS 的建議,隨後雷軍推倒了所有 WPS 代碼,重新設計 WPS,主動與微軟兼容。此外,WPS 最新版的 ribbon 界面也問過微軟,估計微軟也考慮到和金山的舊情,因此並沒有反對。

如今已經 2018 年,從 1988 年求伯君完成第一版 WPS 算起,已經有 30 年了。


是的,通過逆向工程+猜+部分微軟給的文檔。那時候還找了毒霸的人幫他們逆,因為毒霸有搞病毒分析的人。初期微軟為了打入國內市場,就和wps簽了協議互相開放,可以兼容,後來office搶佔市場後就把wps踹了不再開放。wps只能通過逆向工程自己兼容了。

微軟開放的只是中間層rtf協議,之後就沒開放格式了,直到最近的docx才重新開放(此句有誤,經vczh指正,微軟現在已經開放當年的私有格式。但08年之前是沒有的)。wps為了兼容中間這一系列版本,只能想別的辦法。

說通過猜位元組方式的答主,理論上是這樣,實際上去試試就知道有多麻煩了。有時候一個位元組有多個含義,也有時候有些位元組一直沒找到哪個操作能讓這個位元組被改動。還有時候多個操作都會改動下這個位元組,但兩個操作可能完全不相關(這個可能是微軟的bug或者實現上不規範的地方);文檔中不光是字元,還有標點,中英文混編排版,表格等等;不去逆一下實現,非常難以保證實現思路和微軟一模一樣。

ps:剛問了下wps的人,他們說當時office有文檔,但是不全,有些核心的內容微軟也有意隱瞞,好像是最早董波他們逆向的吧。自己逆了一部分,然後微軟也給了一部份。07年還是08年時,微軟為了推動office文檔的格式標準成為國際電子文檔的標準,跟WPS做了一些技術交換,給了WPS一些以前不掌握的技術,讓WPS可以更好的兼容office文檔,這樣的話,WPS就相當於和微軟一個戰壕了。當時老雷還提出幾個要求,三方面兼容:格式兼容,版面兼容,介面兼容。


單從技術上講,擴展名帶x的格式都是基於ECMA OpenXML格式的文件,是業界統一規範,遵守就好了,保證能兼容。


功能上基本只能夠不完美兼容office2010之前的大多數功能。

日常在列印店和教室公用的office2003 、自用的office365、同學用的wps之間文件的各種格式錯誤調整無力中心態爆炸。

我愛PDF。


作為字處理軟體,WPS開發在先,DOS下就有WPS了(那時候還是基於標記的(類似HTML),不是所見即所得。),而兼容ms word在後。

兼容word/excel等文件格式是各種逆向工程吧。

比如,新建一個空文檔,保存為1,然後寫一個a字保存為2,將a字體改變為黑體,保存為3。用二進位方式比較1,2,3三個文件就可以猜測哪些是文件頭,哪些是文本,哪些是格式信息。

另外逆向工程的定義是:

Reverse engineering, also called back engineering, is the processes of extracting knowledge or design information from a product and reproducing it or reproducing anything based on the extracted information.

不見得非得是反彙編和反編譯。


這個。。。真的用不著逆向工程。。。@龍泉寺掃地僧

那個年代的排版引擎遠沒有現在的複雜。個人認為,靠解析也完全有能力的。再加上協議也完全夠了。

至於輪子哥@vczh說的文檔,在那個年代是不存在的。那個年代巴不得你們都看不懂我的格式,所以我們也有wps格式的文件,本質上還是二進位文件,跟.doc文件是類似的。

doc本質上就是一種二進位格式的文件。肯定是有規律的。要不然office也沒辦法解析。

至於怎麼解析,可以參考下開源的libreoffice。

怎麼突然發現最近大家對WPS這麼感興趣了。

打一波廣告,可以嘗試下Linux版本的WPS,還是很好用的。

最後吐槽一句,排版引擎是很複雜的東西。微軟自己對自己的office都不做兼容。也就是你用不同版本的office保存後打開都有可能排版會亂的。

我只能表示,很無奈。。。


竟然很多人不知道,WPS 比 Office 要早~

我們小時候,WPS 教程之類的書,非常暢銷~

當然後來由於微軟將 Office 預裝到 Windows 中,再加上中國D版 Windows 的流行,徹底斷了 WPS 的生路,變成了事實上的壟斷者,而這時候 Word 不再兼容 WPS 了。而隨後金山公司的操作也由於歷史眼光的局限性,雖然也非常好用,但是由於不兼容 MS Office 的文檔,跟 Office 的界面也不同,最後也沒有獲得特別大的市場份額。

後來在 2005 年,WPS 將代碼重寫,格式兼容 MS Office,界面跟 MS Office 一樣,並且個人免費使用,才沒有造成這樣一個著名的國產品牌消失。這個版本里兼容 Office 應該就是輪子哥回答的答案吧。

有些人你可以無知,但是不要缺了敬畏之心~


好像是一起合作開發出來的吧?後來微軟把金山給踹了。


我以前在 WPS 論壇找關於支持 odt 文檔格式的信息,見到開發團隊提到過,光是支持 docx 文檔就花了 8 年時間,沒有人力再去搞 odt 了。更早的帖子提到,為了全面兼容微軟,WPS 從 V6 版本開始把內核換了。


最開始國內標準是wps的, 後來微軟進入國內市場。微軟和金山簽了一個互相格式兼容協議的。

輪子哥出來指正了,這句話,應該有誤,劃掉。後來微軟因為盜版市場佔據主導權,就把金山給踢了,搞自己的小私貨了。

上面有格式兼容協議是真的。


在Microsoft沒有公布之前,早期因該是逆的,不過只靠逆工作量也太大,後來還參考了,OpenOffice,被列到了恥辱柱上,當然現在沒有了.


答案很簡單,當年wps是政府主流的文檔格式,微軟想進中國,所以跟wps做了格式互相兼容的交換,再後來,wps格式就消失了


文件格式編碼這玩意MSDN上都有,你肯花時間看,兩三個月擼一個能識別大部分內容的解析器不是啥問題。(自有圖形這塊比較雜沒心思弄, 別的都很簡單)

當年有沒有公布這個真不知道。

要擼排版效果的話可能還真的要反向一下。想做到一樣樣其實挺難的。


逆向工程呀,但是支持不完美。直到微軟出了開源的文件格式,比如後綴名是docx的格式


事實是:微軟開源了好伐。

把excel等文件的解析方式放到了.NET 框架中,筆者用C# 在vs2010的環境下成功解析過excel文件內容,並且用自己獨特的方式把它顯示出來。

見傳送門

https://wapbaike.baidu.com/item/NPOI/10374941?fr=aladdin

關鍵詞是NPIO

如果有這樣的組建,寫WPS也不是不可能嘛!微軟為開發者提供的工具很多,並非不開源!


是office兼容wps好吧。

求伯君真大佬


其實不需要非要對office程序進行逆向反編譯之類的,doc、xls本身就是基於微軟的複合文檔格式的,此格式很常用,基本上只要搞清楚xls,doc裡面存儲了哪些欄位,以及欄位的取值含義就可以了。在沒有公開文檔格式之前,這些也是可以試出來的。


1.不用逆向,msdn自帶有文檔,像libreoffice也能打開doc,docx等文件格式。

2.實在不兼容就分析docx格式,解壓docx都是一堆xml。


謝邀

WPS開始並不是現在微軟的格式,但是開發比較早,當時微軟的Office還沒出來。

早期doc、ppt讀寫方式比較簡單,金山當時和微軟有協議,互相幫助對方開發。

後來讀寫docx、pptx的功能是通過逆向微軟Office和參考一些軟體的代碼得出的。

而社區開發的OpenOffice是志願者提交的,WPS曾經參考過這些代碼。

同樣逆向出來的軟體還有一軟的Polaris Office和Office Suite等等


推薦閱讀:

WPS 為什麼不增加 Office 套件中軟體的種類呢?
為何現在 iWork 的使用人數沒有 Microsoft Office 多?
WPS Office 是不是金山公司抄襲微軟 Office 的?
為什麼 Office for iPad 自有格式的兼容性反而不如 WPS for iOS?
如何看待wps的强迫行为?

TAG:微軟Microsoft | 軟體 | 編程 | MicrosoftOffice | WPSOffice |