有朋友询问如何在Web页面上做到像SharePoint中的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时Word在IE中被打开那样。想想这个问题应该很多人都会感兴趣,所以干脆写一篇blog来大致描述一下方法。
在安装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.dot", "http://www.abc.com/documents/");
就可以使用“http://www.abc.com/documents/sampleTemplate.dot”这个模版来创建一个新的文档,默认新文档的保存地点是“http://www.abc.com/documents/”。创建新文档时使用的程序取决于模版文件的类型(比如.dot模版会对应Word)。新文档的保存同样需要注意权限问题。CreateNewDocument()方法同样会返回一个bool值来反映操作是否成功。
CreateNewDocument()方法的第一个参数,除了可以使用一个模版的地址外,还可以直接指定为希望用来创建新文档的客户端程序的ProgID。
打印 | 张贴于 2004-11-03 17:49:00 | Tag:SharePoint ASP.NET



留言反馈
有没有办法 让它在linux下用
招聘兼职翻译、同传译员和外籍英文校对人员,不知道是否有时间。
希望有机会合作.
郭先生
同传租赁 同声传译翻译公司 同声传译设备租赁 同声传译 同声传译设备租赁 同传租赁 北京同传设备租赁 上海同声传译设备租赁 同声传译 同声翻译公司
邮箱BOY8088@126.COM
急急急.....
我在微软的系统中能够实现各位提供的方法,
现在我要把这种方法嵌入到IMB的LOTUS中,
那么在打开WORD文档的附件后,如何在保存回去?
LOTUS数据库是文本型的。和MS的有区别。
希望和楼主及各位探讨知识。
QQ12670543
下面这句代码:new ActiveXObject("SharePoint.OpenDocuments.2"); //
是不是表示客户端也要安装sharepoint的一个组件呢.
像在PPT中划线一样
超急用~~~
拜託!~~
感谢提供的这段代码,我现在遇到的问题是,使用上面的代码访问ftp服务器时,没有弹出用户名和密码框,我想在程序中加入用户名和密码,可是我对这个控件还不是很了解和熟悉,希望能得到大家的指点.急用!先谢谢各位前辈了
ztjake@eyou.com
个人BLOG:wwww.mikk.cn
但是却不能在 Office 2000中调用~~
请问怎么办呢
IIS开放写权限,匿名访问帐户开放物理路径的写权限和完全控制
测试结果:远程保存失败!!!
我想嵌入网页中
请高手指点~!
开放WebDAV方法如下:
1.打开IIS6
2.打开Web Service扩展
3.选中WebDAV,右键,选Allowed
4.try again! is OK???
1、服务端是winxp pro pack2,路径也是ntfs格式的
2、服务端是linux fedora ,路径是777的权限
打开也都是只读。。。
我用Tomcat5成功,可以直接编辑并保存到服务器上。
要实现保存,要把存放word文件的目录设为WebDav,我使用的是Apache WebDav (slide)。
我记得IIS可以直接支持WebDav的,一个类似SharePoint的东西。
不知有不有什么方法可以控制它不以只读方式打开呢?
这个JP是另外启动Word程序找开Word文件,而不是WEB里直接打开吧
如何找到打开PowerPoint文件的 ProgID
vs.net
只读方式打开的,不能直接保存到服务器上,请高手指点
sjwebhot@hotmail.com 交流交流非常感谢
mailto:cnjoinwin@hotmail.com
Mailto: jclink@163.com
我的软件环境:windows xp pro版,一定要装office2003完整版(迷你版无法通过,没有那个dll)
"但我想在打开WORD文档时,把WORD的整个界面显示在WEB里。就好像WORD是当前WEB中的一部份一样。不知道怎么办????"
暂时无解,除非用第三方组件(暂时还没有找到免费的)如果水平高,自己编一个组件也可以,用VB来做!
我的问题:
我把这个dll单独拷到system32目录下无效,用注册组件的方法,无法注册。大家是否有什么办法,让我单独注册那个dll,我实在不想装那个大大的office2003
但我想在打开WORD文档时,把WORD的整个界面显示在WEB里。就好像WORD是当前WEB中的一部份一样。不知道怎么办????请各位前辈、高手们给点意见。
QQ:42113817
E-mail:zhushaohuaonline@sohu.com
谢谢!急!!!
可以打开和修改,但无法保存,请问该如何解决,目录权限已经给了最大权限,可否把详细的步骤写出来呀。
十分感谢。
邮件cqhg@yeah.net,等待中
这个方法office 2000支持吗??
QQ:14787712欢迎交流.
可以实现office文档中的word与excel文件的在线编辑与上传
成功者指条路!
出现这样的javascript错误:
对象不支持此属性或方法
可是我们可以自己想想修改就好了
cyber2727@sina.com
等待交流
請教
msn:leester123@hotmail.com
re: 如何在Web页面上直接打开、编辑、创建Office文档
re: 如何在Web页面上直接打开、编辑、创建Office文档
re: 如何在Web页面上直接打开、编辑、创建Office文档
re: 如何在Web页面上直接打开、编辑、创建Office文档
re: 如何在Web页面上直接打开、编辑、创建Office文档
re: 如何在Web页面上直接打开、编辑、创建Office文档
re: 如何在Web页面上直接打开、编辑、创建Office文档
最后留下联系方式,以便于交流
不要操作自己本机上的文件。
<html>
<head>
<title>
test_word
</title>
<Script Language="JavaScript">
function Validator()
{
var openDocObj;
openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2");
openDocObj.EditDocument("C:\Inetpub\wwwroot\前言.doc");
}
</script>
</head>
<body bgcolor="#ffffff">
<h1>
<input type="button" name="word" value="word" onclick="Validator()">
</h1>
</body>
</html>
为什么这样执行没有返应????????????哪里错了
谢谢!
openDocObj.EditDocument("c:\\a.doc");
还有一点,就是这个a.doc如果放在wss上,那么是可以直接编辑保存的,如果是放在一个普通的web server上,打开则是只读打开的。我在普通的web server上放了这个a.doc,并且将目录和a.doc全部设置为everyone可以完全控制。但是打开还是只读。所以问一下,普通的web server能否实现word文件自动保存回去?
Office2000如何改造呢?
如何重写这个控件呢?
提示说找不到文件,或者是文件损害。
在我本机还提示有危险之类的。
记住这里了,以后要用到的时候直接过来抄
just looking for such documents.