欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Office文档在线编辑的一个实现方法

程序员文章站 2022-03-20 15:05:29
office xp之后的版本支持通过webdav协议(http的扩展)直接编辑服务器上的文件。 iis(6.0)支持webdav,这在iis管理器的web服务扩展中可以看到...
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) == "#ff0000" )
{
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 .