如何在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 getElementsByName()的用法说明
Jul 31 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
Mar 01 Javascript
JavaScript实现动画打开半透明提示层的方法
Apr 21 Javascript
js中实现字符串和数组的相互转化详解
Jan 24 Javascript
jQuery获取radio选中项的值实例
Jun 18 Javascript
判断js的Array和Object的实现方法
Aug 29 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
React操作真实DOM实现动态吸底部的示例
Oct 23 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 Javascript
详解Vue结合后台的列表增删改案例
Aug 21 Javascript
解决vue点击控制单个样式的问题
Sep 05 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 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
全国中波电台频率表
2020/03/11 无线电
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
php 策略模式原理与应用深入理解
2019/09/25 PHP
宝塔面板在NGINX环境中TP5.1如何运行?
2021/03/09 PHP
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
jquery点击缩略图切换视频播放特效代码分享
2015/09/15 Javascript
js性能优化技巧
2015/11/29 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
python中的一些类型转换函数小结
2013/02/10 Python
Python itertools模块详解
2015/05/09 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
pytorch 可视化feature map的示例代码
2019/08/20 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
Numpy之reshape()使用详解
2019/12/26 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
销售行业个人求职自荐信
2013/09/25 职场文书
小学教师的个人自我鉴定
2013/10/24 职场文书
社会实践感言
2014/01/25 职场文书
党员公开承诺书范文
2014/03/25 职场文书
食堂标语大全
2014/06/11 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
建筑工程材料员岗位职责
2015/04/11 职场文书
小学德育工作总结2015
2015/05/12 职场文书
导游词之介休绵山
2019/12/31 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS