如何在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 相关文章推荐
去除链接虚线全面分析总结
Aug 15 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
May 18 Javascript
自己写的Javascript计算时间差函数
Oct 28 Javascript
jquery插件jquery倒计时插件分享
Dec 27 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
Nov 24 Javascript
原生javascript实现Tab选项卡切换功能
Jan 12 Javascript
JS实现超简单的仿QQ折叠菜单效果
Sep 21 Javascript
JS作用域链详解
Jun 26 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
详解vue中async-await的使用误区
Dec 05 Javascript
vue 开发企业微信整合案例分析
Dec 02 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 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
全文搜索和替换
2006/10/09 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
jquery简单体验
2007/01/10 Javascript
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
IE8中使用javascript动态加载CSS的解决方法
2014/06/17 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
javascript中数组和字符串的方法对比
2016/07/20 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
基于matplotlib xticks用法详解
2020/04/16 Python
Django如何使用redis作为缓存
2020/05/21 Python
Python datetime模块使用方法小结
2020/06/18 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
HTML5 Canvas绘制圆点虚线实例
2015/01/01 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
卡西欧G-SHOCK英国官网: 防水防震手表
2018/01/08 全球购物
文明礼仪事迹材料
2014/01/09 职场文书
2014的自我评价
2014/01/13 职场文书
个性发展自我评价
2014/02/11 职场文书
一岗双责责任书
2014/04/15 职场文书
教师网络培训心得体会
2016/01/09 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
python四种出行路线规划的实现
2021/06/23 Python
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS