如何在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 相关文章推荐
拖拉表格的JS函数
Nov 20 Javascript
JavaScript中变量提升 Hoisting
Jul 03 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
Jul 17 Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 Javascript
jQuery短信验证倒计时功能实现方法详解
May 25 Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 Javascript
移动端滑动插件Swipe教程
Oct 16 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
Nov 29 Javascript
bootstrap 设置checkbox部分选中效果
Apr 20 Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
vue @ ~ 相对路径 路径别名设置方式
Jun 05 Vue.js
(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操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP随机生成随机个数的字母组合示例
2014/01/14 PHP
PHP排序算法类实例
2015/06/17 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
php中的常用魔术方法汇总
2016/02/14 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
php微信公众号开发之答题连闯三关
2018/10/20 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
JS实现键值对遍历json数组功能示例
2018/05/30 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[05:24]TI9采访——教练
2019/08/24 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python获取linux主机ip的简单实现方法
2016/04/18 Python
python 性能优化方法小结
2017/03/31 Python
python 日期排序的实例代码
2019/07/11 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
简单介绍Object类的功能、常用方法
2013/10/02 面试题
儿科护士自我鉴定
2013/10/14 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
催款函范本大全
2015/06/24 职场文书
php字符串倒叙
2021/04/01 PHP