如何在Web页面上直接打开、编辑、创建Office文档

正所谓成也ActiveX,败也ActiveX。微软推出的ActiveX其实是一个很强大的理念,可惜被很多人用到了不该用的地方。

前几天和客户商谈业务的时候,看到他们自己的工作流系统支持Web页面直接创建Office文档编辑文件。想想有点意思可以放入我们自己的系统中,回来找点时间研究了一下搞定。基本上参照下面Kaneboy写的Blog就可以搞定,网上这篇文章也是满天飞,但是很多人都只是Copy了正文,里面有几个应用中的关键点没有考虑到。我先把文章列出来,然后把关键点补充在下面。结合正文和我补充的点就可以正常运作了。

参照如下文章:

在安装Office2003以后,有一个ActiveX控件被安装到了系统中,这个控件位于“Program Files\Microsoft Office\OFFICE11\owssupp.dll”。通过这个控件,客户端页面上的JavaScript就可以激活本地的Office软件,来实现打开、编辑Office文档。(另,Office XP应该就已经包含这个ActiveX控件了。)

首先,用Script创建一个本地的对象:

openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2"); // 为了兼容Office XP,可以创建“SharePoint.OpenDocuments.1”

然后,调用openDocObj的相应的方法。比如打开服务器上的一个Office文档:

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

openDocObj对象会根据参数中不同的Office文档类型(.doc、.xls、.ppt)来打开不同的程序(Word、Excel、PowerPoint)。ViewDocument()方法还有一个重载签名,可以让我们手工指定激活哪个程序来打开文档:

openDocObj.ViewDocument("http://www.abc.com/documents/sample.doc", 要激活的程序的ProgID);

那么要打开Office程序在线编辑文件又如何?

openDocObj.EditDocument("http://www.abc.com/documents/sample.doc");

就可以直接激活Word,在Word里面编辑文档,然后直接点击Word里面的保存功能,就可以将文件保存会服务器上了。注意:为了让Word能将编辑后的文档直接保存会服务器,访问Web站点的当前上下文的Windows Identity必须对服务器的相应目录(即“http://www.abc.com/documents”这个虚拟目录所对应的服务器上的物理路径)有相应的写权限,否则保存动作会失败。编辑完成后,EditDocument()会返回一个bool值,来反映编辑操作是否成功。

我们还可以通过打开服务器上的一个文档模版,来创建一个新的文档:

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

就可以使用“http://www.abc.com/documents/sampleTemplate.doc”这个模版来创建一个新的文档,默认新文档的保存地点是“http://www.abc.com/documents/”。创建新文档时使用的程序取决于模版文件的类型(比如.dot模版会对应Word)。新文档的保存同样需要注意权限问题。CreateNewDocument()方法同样会返回一个bool值来反映操作是否成功。

CreateNewDocument()方法的第一个参数,除了可以使用一个模版的地址外,还可以直接指定为希望用来创建新文档的客户端程序的ProgID。

补充的注意点

1.       IIS6需要在IIS配置中打开WebDAV。

2.       虚拟目录的配置中要允许Write,默认只能Read。不配置Write权限打开的文件会显示“只读”,而不能保存修改。

3.       虚拟目录执行帐号要给ASP.NET 帐号(依照不同的.net framework 版本而不同)写权限,多试试几个相关联的帐号IUser_XXX, W3p_XX,Network_XX 实在不行才给everyone帐号加上Write权限。

      我反正就给ASP.net运行帐号加上就好了

4.       试了一下Office2003没有问题,顺便看了一下Office2007目录中也存在此Dll应该也是没有问题的。

5.   因为本质上面是调用客户端的Office程序,所以需要保证客户端存在owssupp.dll 组件,否则执行的时候会报错。简单的方法就是在安装Office程序的时候需安装安排"Windows Sharepoint Service"支持,默认是安装的。如果不想怎么麻烦可以选择直接注册这个Dll,具体参见微软文档 http://support.microsoft.com/kb/833714

           一句话搞定~

你可能感兴趣的:(Office)