曆史背景
在2015年的主流浏覽器版本中,因為可以直接調用微軟開源的 ActiveX控件,可以實作微軟Office軟體的線上編輯及審閱功能,但是從2015年開始,各大主流浏覽器先後取消了對 NPAPI插件,導緻線上編輯Office軟體成為了一個難題。雖然後來有商業公司開發的相關控件,但是還是無法 克服ActiveX控件固有的缺陷,不僅限制了浏覽器的版本,還需要使用者單獨設定浏覽器安全設定,導緻使用者體驗極差。
後來随着SAAS模式的興起,網頁線上編輯文檔也越來越流行,很多巨頭公司都釋出了線上Office服務,雖然這些服務在多人協作、跨平台等方面有優勢,但是存在的問題也很多,比如桌面版Office就存在一些功能缺失:需要網絡随時保持線上、不能儲存桌面生成的文檔、表格過大打開的時候卡死、多文檔同時編輯闆式不一緻等,最關鍵的是線上Office服務很難整合到自己公司的OA、GRM、ERP中去,最好的辦法還是需要在桌面Office基礎上,通過技術手段讓其流暢的運作在 Chrome、Firefox、Edge、360、Opera、QQ等主流版本浏覽器中。
現有方案
1.浏覽器插件方案
此方案隻适用于IE浏覽器,通過在網頁中 直接運作ActiveX控件調用桌面Office軟體的自動化接口來實作, 免費DsoFramer及點聚WebOffice控件都是基于此原理,另外一些收費的如: 重慶軟航NTKO Office文檔控件、北京卓正PageOffice、廣州華爾太WebOffice控件也是基于此原理。2021年初随着Chrome 對 Flash Player PPAPI插件的支援,浏覽器插件的方案就徹底失效了。
2.特定浏覽器方案
一些公司為了降低開發成本,又想繼續使用公司原有系統,被迫繼續使用安全漏洞較多的低版本Chrome或者360等其他低版本浏覽器,低版本浏覽器的安全漏洞和BUG非常多,導緻Office文檔控件在此基礎上行使用也困難重重。

3.外接程式方案
各浏覽器禁用 NPAPI插件後,各個廠商紛紛使用浏覽器外部協定來 啟動獨立的EXE外接程式,看起來問題得到了很好的解決,但是每次運作中使用者端都會彈出對話框,讓使用者不勝其煩。使用者體驗極差,如果使用者此時已經打開了文檔,還非常容易引起文檔異常,導緻檔案丢失等情況。
4.雙核方案
通過 Chrome等浏覽器上的擴充程式IETab來實作,此方案同樣會有 ActiveX控件彈窗, 使用者體驗很差。
最終更新方案:
通過上述4個方案可以看出,如果想在主流浏覽器中打開、編輯、儲存微軟Office文檔,核心點就在于獨立于浏覽器之外并且能很好相容各浏覽器。這個就是今天介紹的已經非常成熟的商業化産品—
猿大師中間件。
猿大師中間件的微軟Office網頁小程式如何解決的呢?
原理就是在網頁中指定位置和大小,模拟實作一個内嵌到網頁中顯示的視窗,在這個視窗中再調用桌面Office軟體的自動化接口實作doc、xls、ppt等文檔的操作。
前端還必須可對這個視窗進行實時控制,而且視窗必須跟随浏覽器的移動和縮放、網頁滾動、标簽頁切換、關閉等操作進行自動關聯。這個視窗的宿主程序同時提供Web Socket的服務端和JSON打包指令的解析執行子產品,前端就可以通過Web Socket連接配接後發送JSON打包的控制指令實作控制此視窗的動作。此方案可以說是上述外接程式方案的更新版,關鍵差異在于此方案可實作内嵌Word、Excel、PowerPoint、WPS文字、WPS表格等程式視窗到網頁指定區域運作的效果,而且抛棄了通過IE核心來加載ActiveX控件的方案,解決了使用者體驗差、加載緩慢和記憶體占用高的問題。另外啟動這個外接程式是通過Web Socket連接配接實作的,也解決了每次啟動都會彈提示的煩惱問題,還有就是提供了類似ActiveX控件的自動更新方案,可在網頁中實作靜默自動更新,并額外增加了調用驗證機制確定外接程式的安全啟動。
另外猿大師中間件的微軟Office網頁小程式提供了豐富的二次開發接口,對現有系統改動比較小的前提下, 請求啟動IE控件小程式加載即可。
猿大師中間件免費體驗位址:
http://www.yuanmaster.com/xiazai/猿大師中間件體驗視訊:
https://www.bilibili.com/video/BV1gP4y1p7t8?spm_id_from=333.999.0.0總結:
一個好的技術實施方案,首先是要滿足客戶的剛性需求,其次是盡量降低采購、開發、實施及維護的總成本,再次是要有良好的相容性和穩定性,最後需盡量確定技術方案不能因為浏覽器的更新而失效。本文基于目前最新的技術資訊和實踐經驗,給大家提供了猿大師中間件搭配Office網頁小程式這樣一個穩定可靠、體驗好、相容性佳的桌面Office文檔控件技術方案,尤其适合在内網處理複雜文檔和資料量大的表格場景,以供大家技術選型參考。