如何在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更优雅的兼容
Aug 12 Javascript
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
Dec 19 Javascript
jQuery拖拽div实现思路
Feb 19 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
jQuery实现购物车表单自动结算效果实例
Aug 10 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
JavaScript常用工具方法封装
Feb 12 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
2019十大人气国漫
2020/03/13 国漫
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
Windows 下安装 swoole 图文教程(php)
2017/06/05 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
js点击选择文本的方法
2015/02/09 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
jQuery文件上传控件 Uploadify 详解
2016/06/20 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
原生JS进行前后端同构
2018/04/22 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
用Python遍历C盘dll文件的方法
2015/05/06 Python
Python应用库大全总结
2018/05/30 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
python实现小程序推送页面收录脚本
2020/04/20 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
python 6行代码制作月历生成器
2020/09/18 Python
python中time、datetime模块的使用
2020/12/14 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
计算机应用职专应届生求职信
2013/11/12 职场文书
领导的自我鉴定
2013/12/28 职场文书
考研英语复习计划
2015/01/19 职场文书
欢迎词怎么写
2015/01/23 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
食品安全主题班会
2015/08/13 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫