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

2016-02-19 12:41 1 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

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

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

延伸阅读
标签: Java JAVA基础
1 Java与数据库应用,JDBC Java发明以来,在短短的几年之间,迅速占领了从桌面应用(J2SE)到服务器(J2EE),再到小型设备嵌入式系统(J2ME)的应用开发市场,其语言吸取了SmallTalk的一切皆对象的理念,摆脱了C++的历史累赘,简洁、自由的风格赢得了很多开发者的喜爱。从JDK1.1开始,Java成为实用的语言,而不是被人...
为什么面向对象的编程会在软件开发领域造成如此震憾的影响? 面向对象编程(OOP)具有多方面的吸引力。对管理人员,它实现了更快和更廉价的开发与维护过程。对分析与设计人员,建模处理变得更加简单,能生成清晰、易于维护的设计方案。对程序员,对象模型显得如此高雅和浅显。此外,面向对象工具以及库的巨大威力使编程成为一项更使人...
作为异军突起的新型语言,Java定义了一个标准的运行环境,用户定义的类在其中得到执行。这些用户自定义类的实例代表了真实环境中的数据,包括储存在数据库、文件或某些大型事务处理系统中的数据,而小型系统通常也需要一种在本地负责控制数据存储的机制。  由于数据访问技术在不同的数据源类型中是不一样的,因此对数据进行...
COM 中的典型方案是让客户端对象实例化服务器对象,然后调用这些对象。然而,没有一种特殊机制的话,这些服务器对象将很难转向并回调到客户端对象。COM 连接点便提供了这种特殊机制,实现了服务器和客户端之间的双向通信。使用连接点,服务器能够在服务器上发生某些事件时调用客户端。 原理如下图: 有了连接点,服务器可通过定义一...
单一类:(静态成员变量&静态初始化块)(成员变量&初始化块)构造函数 代码如下: public class 对象初始化顺序 {     public static void main(String[] args){         Person p = new Person();     } } class Person{     public static String staticf...

经验教程

749

收藏

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