如何在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操作cookie_获取与修改代码
May 21 Javascript
js实现的常用的左侧导航效果
Oct 17 Javascript
javascript闭包的理解
Apr 01 Javascript
jquery实现动态改变div宽度和高度
May 08 Javascript
connection reset by peer问题总结及解决方案
Oct 21 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
详解webpack 入门与解析
Apr 09 Javascript
JS实现的3des+base64加密解密算法完整示例
May 18 Javascript
Bootstrap table 服务器端分页功能实现方法示例
Jun 01 Javascript
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
JavaScript实现手风琴效果
Feb 18 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
详解no input file specified 三种解决方法
2019/11/29 PHP
javascript实现简单的进度条
2015/07/02 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
bootstrap fileinput完整实例分享
2016/11/08 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
基于Vue实现页面切换左右滑动效果
2020/06/29 Javascript
基于js中this和event 的区别(详解)
2017/10/24 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
基于vue-simplemde实现图片拖拽、粘贴功能
2018/04/12 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
微信小程序实现页面监听自定义组件的触发事件
2020/11/01 Javascript
python基础教程之类class定义使用方法
2014/02/20 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python做简单的字符串匹配详解
2017/03/21 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
Python实现的桶排序算法示例
2017/11/29 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
transform python环境快速配置方法
2018/09/27 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
python numpy之np.random的随机数函数使用介绍
2019/10/06 Python
python实现扫雷游戏的示例
2020/10/20 Python
杭州时比特电子有限公司SQL
2013/08/22 面试题
学生档案自我鉴定
2013/10/07 职场文书
教师推荐信范文
2013/11/24 职场文书
信访工作个人总结
2015/03/03 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js
使用springMVC所需要的pom配置
2021/09/15 Java/Android
html中相对位置与绝对位置的具体使用
2022/05/15 HTML / CSS