轻松架起Java连接COM对象的桥梁

2016-02-19 12:41 6 1 收藏

下面,图老师小编带您去了解一下轻松架起Java连接COM对象的桥梁,生活就是不断的发现新事物,get新技能~

【 tulaoshi.com - 编程语言 】

轻松架起Java连接COM对象的桥梁

问题是在CSDN上一网友提出的将 m$ word 转换为 xml 的java程序问题(http://www.csdn.net/expert/topic/1091/1091620.xml). 现将一种简便的方法详细阐述于下:
1。下在Java-COM连接桥JACOB(http://danadler.com/jacob/),需要jacob.jar和jacob.dll两个文件就可以了。并把jacob.dll所在目录设到PATH。
2。调用程序(Exam_2.java)如下:
import java.io.File;
import com.jacob.com.*;
import com.jacob.activeX.*;

public class Exam_2 {

public static void main(String[] args) {

ActiveXComponent app = new ActiveXComponent("Word.Application");//启动word
String inFile = "H:Majix-1_2_2_fullsamplemy.doc";//要转换的word文件
String tpFile = "H:Majix-1_2_2_fullsamplemy.htm";//临时文件
String otFile = "H:Majix-1_2_2_fullsamplemy.xml";//目标文件
boolean flag = false;
try {
app.setProperty("Visible", new Variant(false));//设置word不可见
Object docs = app.getProperty("Documents").toDispatch();
Object doc = Dispatch.invoke(docs,"Open", Dispatch.Method, new Object[]{inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();//打开word文件
Dispatch.invoke(doc,"SaveAs", Dispatch.Method, new Object[]{tpFile,new Variant(8)}, new int[1]);//作为html格式保存到临时文件
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}

if ( flag ) {
app = new ActiveXComponent("Excel.Application");//启动excel
try {
app.setProperty("Visible", new Variant(false));//设置excel不可见
Object workbooks = app.getProperty("Workbooks").toDispatch();
Object workbook = Dispatch.invoke(workbooks,"Open",Dispatch.Method,new Object[]{tpFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();//打开临时文件
Dispatch.invoke(workbook,"SaveAs", Dispatch.Method, new Object[]{otFile,new Variant(46)}, new int[1]);//以xml格式保存到目标文件
Variant f = new Variant(false);
Dispatch.call(workbook, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
try {
File file = new File(tpFile);
file.delete();
} catch (Exception e) {
}
}
}
}
}
3。编译执行(确保jacob.dll在PATH中)
H:mytestjavac -classpath jacob.jar Exam_2.java
H:mytestjava -cp jacob.jar;. Exam_2

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1601539.html

延伸阅读
COM 中的典型方案是让客户端对象实例化服务器对象,然后调用这些对象。然而,没有一种特殊机制的话,这些服务器对象将很难转向并回调到客户端对象。COM 连接点便提供了这种特殊机制,实现了服务器和客户端之间的双向通信。使用连接点,服务器能够在服务器上发生某些事件时调用客户端。 原理如下图: 有了连接点,服务器可通过定义一...
数据库操作现在是项目开发的根本,学习Java首先应该学会怎么样连接数据库,用Java连接数据库可不像用Delphi这类工具那样设几个属性就OK,说简单也简单,说复杂,其实也挺复杂的,而且很麻烦,如果是初学,根本不能保证第一次就连接成功,下面以SQL Server 2000为例,说说Java连接数据库的基本方法,也记录一下心得。 1、下载SQL Server 2000 ...
标签: 周公解梦 解梦
梦见桥梁 桥梁是梦中常常出现的形象,它几乎一直标志着从生活的某个阶段过渡到生活的另一个阶段。从建筑上看,桥可能牢固,可能破旧失修,或者显示其他特征。表示梦者面对世界所具有稳定的隶属感。梦者需要这等感情,借以应付生活中的种种变更。 梦中见到桥梁象征着梦者和其他人之间或者在各种生活领域内的感情联系。 从...
如何通过COM接口得到实现该接口的对象实例问题由来我的程序为一个基于COM的插件结构,框架需要向插件传递一个IResource接口。IResource 需要根据不同的插件传递不同的内容。 接口定义 IResource = Interface(IDispatch)   Function GetPath: String; safecall; End; 实现类 TResource = TClass(TAutoObject, I...
为什么面向对象的编程会在软件开发领域造成如此震憾的影响? 面向对象编程(OOP)具有多方面的吸引力。对管理人员,它实现了更快和更廉价的开发与维护过程。对分析与设计人员,建模处理变得更加简单,能生成清晰、易于维护的设计方案。对程序员,对象模型显得如此高雅和浅显。此外,面向对象工具以及库的巨大威力使编程成为一项更使人...

经验教程

330

收藏

73
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部