如何在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 数组的 uniq 方法
Jan 23 Javascript
javascript 页面划词搜索JS
Sep 28 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
Oct 31 Javascript
JavaScript中的事件委托及好处
Jul 12 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
Oct 26 Javascript
详解springmvc 接收json对象的两种方式
Dec 06 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
Jul 19 jQuery
JavaScript复制内容到剪贴板的两种常用方法
Feb 27 Javascript
js调用设备摄像头的方法
Jul 19 Javascript
微信小程序调用摄像头隐藏式拍照功能
Aug 22 Javascript
vue中axios请求的封装实例代码
Mar 23 Javascript
webpack 最佳配置指北(推荐)
Jan 07 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
JAVA/JSP学习系列之七
2006/10/09 PHP
将PHP作为Shell脚本语言使用
2006/10/09 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
php cli 小技巧
2013/06/03 PHP
PHP实现通用alert函数的方法
2015/03/11 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
学习jquery之一
2007/04/27 Javascript
关于js new Date() 出现NaN 的分析
2012/10/23 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
详解微信小程序 wx.uploadFile 的编码坑
2017/01/23 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python处理CSV与List的转换方法
2018/04/19 Python
python下载微信公众号相关文章
2019/02/26 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
保洁主管岗位职责
2013/11/20 职场文书
管理部部长岗位职责
2013/12/05 职场文书
学校消防安全制度
2014/01/30 职场文书
20年同学聚会感言
2014/02/03 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
市场营销工作计划书
2014/09/15 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python