如何在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 注册事件代码
Jan 27 Javascript
jQuery代码优化 事件委托篇
Nov 01 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
不使用浏览器运行javascript代码的方法
Jul 24 Javascript
JS检测图片大小的实例
Aug 21 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
Jan 10 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
Aug 27 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
javascript实现遮罩层动态效果实例
May 14 Javascript
Webpack中loader打包各种文件的方法实例
Sep 03 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 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
用PHP将数据导入到Foxmail
2006/10/09 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
菜鸟javascript基础资料整理2
2010/12/06 Javascript
JS隐藏参数post传值实例
2013/04/18 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
ES6扩展运算符用法实例分析
2017/10/31 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
vue移动端的左右滑动事件详解
2020/06/17 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
Python 3.x 新特性及10大变化
2015/06/12 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
python使用MQTT给硬件传输图片的实现方法
2019/05/05 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
2020/12/08 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
成教自我鉴定
2013/10/27 职场文书
药品质量检测应届生求职信
2013/11/14 职场文书
出国考察邀请函
2014/01/21 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
技术入股合作协议书
2014/10/07 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
电影建党伟业观后感
2015/06/01 职场文书
合作协议书格式范本
2016/03/21 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python