如何在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保留小数点(四舍五入、四舍六入)实现思路及实例
Apr 25 Javascript
js 金额格式化来回转换示例
Feb 23 Javascript
js的2种继承方式详解
Mar 04 Javascript
使用jQuery简单实现模拟浏览器搜索功能
Dec 21 Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 Javascript
JavaScript面试题大全(推荐)
Sep 22 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
详解angularJs中自定义directive的数据交互
Jan 13 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 Javascript
详解vue+css3做交互特效的方法
Nov 20 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
Apr 10 Javascript
微信小程序传值以及获取值方法的详解
Apr 29 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
什么是短波收听SWL
2021/03/01 无线电
jquery中文乱码的多种解决方法
2013/06/21 Javascript
javascript中的parseInt和parseFloat区别
2013/07/12 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
JavaScript实现的弹出遮罩层特效经典示例【基于jQuery】
2019/07/10 jQuery
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
vue proxy 的优势与使用场景实现
2020/06/15 Javascript
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python and or用法详解
2019/06/26 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
中国电视购物:快乐购
2017/02/04 全球购物
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
为数据库创建索引都需要注意些什么
2012/07/17 面试题
网络工程专业毕业生推荐信
2013/10/28 职场文书
网络信息管理员岗位职责
2014/01/05 职场文书
小小商店教学反思
2014/04/27 职场文书
母亲节演讲稿
2014/05/27 职场文书
创先争优个人承诺书
2014/08/30 职场文书
学习作风建设心得体会
2014/10/22 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
出国导师推荐信
2015/03/25 职场文书
原告离婚代理词
2015/05/23 职场文书