天天看點

[轉]Office文檔線上編輯的實作之一

from : http://www.cnblogs.com/jianyi0115/archive/2007/03/16/677712.html

因為項目的關系,研究了一下Office的線上編輯功能,寫出來共享一下。

Office xp之後的版本支援通過webdav協定(http的擴充)直接編輯伺服器上的檔案。

IIS(6.0)支援webdav,這在IIS管理器的web服務擴充中可以看到.利用IIS作為webdav的伺服器端,可以很容易的實作office(word,excel等)的線上編輯.

可以簡單的實驗一下:

確定IIS的webdav擴充安裝并被啟用了,建立一個虛拟目錄test,在其中放一個word文檔a.doc,然後打開word, 檔案->打開->輸入word文檔的通路url(http://localhost/test/a.doc),

修改一下文檔内容,儲存一下,發生了什麼? 文檔被儲存到伺服器上了.

在IE中,可以通過js建立Word.Application,來打開,修改伺服器上的文檔.

wApp = new ActiveXObject("Word.Application.11");       

wApp.Visible = true ;

wApp.Documents.Open( url );

if( trackRevisions ){ //可以實作痕迹保留呢

     wApp.ActiveDocument.TrackRevisions = true ;

     wApp.ActiveDocument.ShowRevisions = false  ;

}else

{

     wApp.ActiveDocument.TrackRevisions = false ;

     wApp.ActiveDocument.ShowRevisions = false  ;          

}      

wApp.ActiveDocument.Application.UserName= Global_CurrentUserName;

另外,安裝office時,會同時按裝一個ActiveX元件:Sharepoint.OpenDocuments,可麼用此元件來激活word,編輯伺服器上的文檔:

var __OpenDocuments = null ;

    function Document_Edit2( url )

    {

        if( __OpenDocuments == null )

        {

            try{

             __OpenDocuments = new ActiveXObject("SharePoint.OpenDocuments.3"); //for office 2007

            }catch(e){} 

            if(  __OpenDocuments == null || typeof(__OpenDocuments) == "undefined" )

            { 

                try{

                 __OpenDocuments = new ActiveXObject("SharePoint.OpenDocuments.2"); //for office 2003

                }catch(e){}               

             }

            if( __OpenDocuments == null || typeof(__OpenDocuments) == "undefined" )

             {

              alert( "請安裝Word(2003或更高版本)" );

              return ;

        }           

         // openDocObj.ViewDocument("http://www.abc.com/documents/sample.doc");, "Word.Document"            

         //openDocObj.CreateNewDocument("http://www.abc.com/documents/sampleTemplate.dot", "http://www.abc.com/documents/");            

        var result = __OpenDocuments.EditDocument( url , "Word.Document" );

        if( result == false )

            alert( "無法打開文檔." );

        }    

    }

可以看到,基于IIS的webdav支援,可以非常簡單的實作office文檔的線上編輯, 但有一個問題:這樣,文檔是存放在檔案系統上,我們很多系統中,

文檔是存放在資料庫中的,這樣一來,如何實作呢???

I tried a lot and found the solution. It will be in the next article .