如何在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实现简易的单数字随机抽奖(0-9)
Mar 19 Javascript
jQuery实现ToolTip元素定位显示功能示例
Nov 23 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
Angular2 自定义validators的实现方法
Jul 05 Javascript
使用JS和canvas实现gif动图的停止和播放代码
Sep 01 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
js将键值对字符串转为json字符串的方法
Mar 30 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 Javascript
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
前端Electron新手入门教程详解
Jun 21 Javascript
如何基于javascript实现贪吃蛇游戏
Feb 09 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中批量替换文件名的实现代码
2011/07/20 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
jQuery插件datalist实现很好看的input下拉列表
2015/07/14 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
2018/08/27 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
基于Vue的侧边目录组件的实现
2020/02/05 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
Python设计模式之状态模式原理与用法详解
2019/01/15 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
wxPython:python首选的GUI库实例分享
2019/10/05 Python
Python 存取npy格式数据实例
2020/07/01 Python
Python同时迭代多个序列的方法
2020/07/28 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
Python字符串及文本模式方法详解
2020/09/10 Python
浅析python 字典嵌套
2020/09/29 Python
Html5在手机端调用相机的方法实现
2020/05/13 HTML / CSS
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
团队口号大全
2014/06/06 职场文书
合同补充协议书
2016/03/24 职场文书
利用Matlab绘制各类特殊图形的实例代码
2021/07/16 Python
Selenium浏览器自动化如何上传文件
2022/04/06 Python