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


Posted in Javascript onMarch 12, 2007

如何在Web页面上直接打开、编辑、创建Office文档 
有朋友询问如何在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。

Javascript 相关文章推荐
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
Mar 12 Javascript
javascript结合ajax读取txt文件内容
Dec 05 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
May 09 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
基于JavaScript实现购物网站商品放大镜效果
Sep 06 Javascript
详解Node.js中的事件机制
Sep 22 Javascript
Vue中使用 setTimeout() setInterval()函数的问题
Sep 13 Javascript
微信小程序实现的自定义分享功能示例
Feb 12 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 Javascript
javascript实现前端成语点击验证
Jun 24 Javascript
(function(){})()的用法与优点
Mar 11 #Javascript
可以文本显示的公告栏的js代码
Mar 11 #Javascript
简单三步,搞掂内存泄漏
Mar 10 #Javascript
如何简单地用YUI做JavaScript动画
Mar 10 #Javascript
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 #Javascript
为Yahoo! UI Extensions Grid增加内置的可编辑器
Mar 10 #Javascript
Gird事件机制初级读本
Mar 10 #Javascript
You might like
PHP新手上路(五)
2006/10/09 PHP
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
Vue开发实现吸顶效果的示例代码
2018/08/21 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
Python set集合类型操作总结
2014/11/07 Python
关于python的list相关知识(推荐)
2017/08/30 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python交易记录整合交易类详解
2019/07/03 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
苏格兰领先的多渠道鞋店:Begg Shoes
2019/10/22 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
过滤器的用法
2013/10/08 面试题
公司中秋节活动方案
2014/02/12 职场文书
医学生临床实习自我评价
2014/03/07 职场文书
2015年酒店工作总结
2015/04/28 职场文书
初三毕业感言
2015/07/31 职场文书
《我是什么》教学反思
2016/02/16 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
讲解MySQL增删改操作
2022/05/06 MySQL