JS实现Office在线编辑和浏览(实用)
来源:互联网 发布:js分页代码 编辑:程序博客网 时间:2024/05/16 05:12
今天在同事负责的项目中无意间看到一个新颖的功能,点击链接直接以word格式打开,然后感兴趣的追问了下实现方式,看了示例很简单,而且直接页面端js就可调用成功,效果很不错,目前遇到项目还没有类似的应用和需求,不过可以积累一下,以后有相似功能那就是来者不拒,可以更全面的分析页面实现深度。
在安装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。
- JS实现Office在线编辑和浏览(实用)
- office 在线浏览和编辑 部署 Office Web Apps Server
- js实现在线查看和编辑office文件
- WEB中使用viewer.js实现在线浏览Office文档
- office在线编辑和远程保存的实现
- WebOffice(在线Office编辑)
- Office文档在线编辑的实现之一
- Office文档在线编辑的实现之一
- Office文档在线编辑的实现之一
- Office文档在线编辑的实现
- Office文档在线编辑的实现之一
- Dsoframer控件实现office在线编辑
- 8个实现在线浏览PDF文件的实用js插件
- 在线编辑office插件(weboffice)使用
- office在线编辑控件
- Office文档在线编辑
- Office文档在线编辑的实现之二
- Office文档在线编辑的实现之二
- 在Ubuntu下解决 adb devices :???????????? no permissions 方法
- 【JavaScript】JavaScript中的封装继承多态
- [leetcode] 200. Number of Islands
- C++primer学习:标准库特殊设施:正则表达式基础
- UIButton文字位置显示
- JS实现Office在线编辑和浏览(实用)
- 让字体变的更清晰CSS 中 -webkit-font-smoothing
- poj2479 Maximum sum(最大子段和变形)
- asp连接acess数据库出现 Microsoft JET Database Engine 错误 '80004005
- 如何生成验证码图片代码实现
- java.sql.SQLException: Access denied for user 'XXX'@'localhost' (using password: YES)
- 使用nginx 实现反向代理
- [Andriod官方API指南]连接之蓝牙
- java 解析XML文件(DOM & SAX)(一)