Office文檔在線編輯的實現之一

 因爲項目的關係,研究了一下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文檔的在線編輯, 但有一個問題:這樣,文檔是存放在文件系統上,我們很多系統中,
文檔是存放在數據庫中的,這樣一來,如何實現呢???  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章