如何从javascript直接调用word插件

JavaScript013

如何从javascript直接调用word插件,第1张

1、在word插件的onConnection事件里设置插件对象的object属性,我是用delphi写的procedure TWordTest.OnConnection(const Application: IDispatch

ConnectMode: ext_ConnectModeconst AddInInst: IDispatch

var custom: PSafeArray)

begin

COMAddIn(AddInInst).Object_ := Self

end

2、在js里如下调用

var addin = wdApp.COMAddIns.Item("插件名称" ) //插件名称是在word中注册时用到的名称

if(addin != null){

addin.Object.Test()

}

另外,告诉大家一个在delphi里调试word插件的方法

在OnConnection事件里弹出一个提示框,然后使用delphi的attach to process功能,在进程列表中选word,就可以调试了

在安装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。

<html>

<head>

<title>

test_word

</title>

<Script Language="JavaScript">

function Validator()

{

var openDocObj

openDocObj = new ActiveXObject("SharePoint.OpenDocuments.2")openDocObj.EditDocument("C:/Inetpub/wwwroot/前言.doc")}

</script>

</head>

<body bgcolor="#ffffff">

<h1>

<input type="button" name="word" value="word" onclick="Validator()">

</h1>

</body>

</html>

你看下下面这段代码!

<script language="javascript" type="text/javaScript">

function readWord(){

var worldObj=null //操作Word的ActiveX对象

try{

wordObj=new ActiveXObject("Word.Application")

}

catch(e){

window.alert("创建ActiveX对象失败!")

return

}

var doc=wordObj.Documents.open("E://test//月下独酌.doc") //得到Word文档

doc.Windows(1).selection.WholeStory() //选中整个文档

document.getElementById("content").innerText=doc.Windows(1).selection.Text

//将文档的内容赋给页面中的元素

wordObj.activeDocument.Close(0) //关闭word文档

wordObj.Quit() //退出ActiveX控件

/*

Documents.Open()方法有3个参数:目标文件路径,文件编辑器,以及是否已读写模式打开目标文件,如果后两个未指定,

系统将默认以当前系统中注册的编辑器以及读写模式打开目标文件

*/

}

</script>