JACOB的语法
转自:http://www.bitscn.com/pdb/java/200904/161117.html
如果你想写一个JAVA代码,其中需要调用JACOB提供的功能,而你还是新手,也许篇文章会大大降低你的花费时间。
我将一个关于JACOB的代码分成下面几个步骤:
1) ActiveXComponent ax = new ActiveXComponent("a1");//构建ActiveX组件实例
其中的a1的值和你需要调用的ActiveX控件有关
|
MS控件名 |
a1的值 |
|
InternetExplorer |
InternetExplorer.Application |
|
Excel |
Excel.Application |
|
Word |
Word.Application |
|
Powerpoint |
Powerpoint.Application |
|
vb/java Script |
ScriptControl |
|
windows media Player |
WMPlayer.OCX |
|
Outlook |
Outlook.Application |
|
Visio |
Visio.Application |
|
DAO |
DAO.PrivateDBEngine.35 |
|
MultiFace |
MultiFace.Face |
2) Dispatch ds = ax.getObject()。 toDispatch();//获取Dispatch对象,我们可以把每个Dispatch对象看成是对Activex控件的一个操作,这一步是获得该ActiveX控件的控制权。
(注:浅析JACOB 中提到过Variant类,这里的ax.getObject()便是获得该对象,我们将其转化为任何对象(类型))
3) Dispatch ds1 = Dispatch.get(ds, "a2")。toDispatch(); //获取该ActiveX对象数据结构中的a2属性
4) Dispatch d2 = Dispatch.invoke(ds1, "a3", a4, a5, a6)。toDispatch(); //功能调用,对ActiveX对象ds1的a3属性执行a4(Dispatch.Put\Dispatch.Get等)操作,执行后a3的值为a5,a6为错误参数码常定义为new int[1],(注:call、get和put方法都是通过该方法实现的)
5) Dispatch ds2 = Dispatch.put(ds, "a7","a8")。toDispatch();//将ActiveX对象ds的属性a4的值设置为a5,该方法返回类型同get一样
6) Dispatch ds3 = Dispatch.call(ds1, "a9", a10);//该方法和get方法非常类似,他是把a9属性赋值给a10
Ok其他的方法我觉得很容易理解,这里就不再做描述了。
下面是一个关于excel的代码,也许对您的进一步自学,会有好处
import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant;![]() public class ExcelDispatchTest {![]() public static void main(String[] args) { ComThread.InitSTA();![]() ActiveXComponent xl = new ActiveXComponent("Excel.Application"); try { System.out.println("version=" + xl.getProperty("Version")); System.out.println("version=" + Dispatch.get(xl, "Version")); Dispatch.put(xl, "Visible", new Variant(true)); Dispatch workbooks = xl.getProperty("Workbooks").toDispatch(); Dispatch workbook = Dispatch.get(workbooks, "Add").toDispatch(); Dispatch sheet = Dispatch.get(workbook, "ActiveSheet").toDispatch(); Dispatch a1 = Dispatch.invoke(sheet, "Range", Dispatch.Get, new Object[] { "A1" }, new int[1]).toDispatch(); Dispatch a2 = Dispatch.invoke(sheet, "Range", Dispatch.Get, new Object[] { "A2" }, new int[1]).toDispatch(); Dispatch.put(a1, "Value", "123.456"); Dispatch.put(a2, "Formula", "=A1*2"); System.out.println("a1 from excel:" + Dispatch.get(a1, "Value")); System.out.println("a2 from excel:" + Dispatch.get(a2, "Value")); Variant f = new Variant(false); Dispatch.call(workbook, "Close", f); } catch (Exception e) { e.printStackTrace(); } finally { xl.invoke("Quit", new Variant[] {}); ComThread.Release(); } } |
JACOB的语法的更多相关文章
- Swift 和 C# 的语法比较
昨天看到Jacob Leverich 写了一篇文章 Swift is a lot like Scala 介绍Swift 和 Scala 的语法对比,从这篇文章的确可以看到Swift 的语法和 Scal ...
- 【jacob word】使用jacob,合并多个word为一个word文件
将几个word文件合并到一个word文件,使用注意点: 1.后面附项目运用的jar包jacob-1.9, 2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32 ...
- 基于Swt、ffmpeg、jacob、vlc、SApi、h2技术编写简单的旁白生成器
一.简介: 前一段时间尝试录制了几集3D编程方面的视频教程,我发现录制时最大的障碍是让脑中的思考.手上的操作和嘴里的解说保持同步,一旦三个"线程"中有一个出错,就必须停下来重新录制 ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- Swift与C#的基础语法比较
背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...
- 探索C#之6.0语法糖剖析
阅读目录: 自动属性默认初始化 自动只读属性默认初始化 表达式为主体的函数 表达式为主体的属性(赋值) 静态类导入 Null条件运算符 字符串格式化 索引初始化 异常过滤器when catch和fin ...
- [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性
回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...
- Velocity初探小结--velocity使用语法详解
做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...
随机推荐
- HDU 3001 Travelling(状态压缩DP+三进制)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 题目大意:有n个城市,m条路,每条路都有一定的花费,可以从任意城市出发,每个城市不能经过两次以上 ...
- Maven使用第三方jar文件的两种方法<转>
http://www.cnblogs.com/sekai/p/5932206.html 今天用上了.. ===================== 在Maven中,使用第三方库一般是通过pom.xml ...
- 在JAVA中生成RSA秘钥对实现SSH互信
https://blog.csdn.net/u014196729/article/details/51496262 https://blog.csdn.net/u013066244/article/d ...
- Echarts怎么用后台传来的json数据
Echarts怎么用后台传来的json数据 <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...
- thinkphp5.0架构总览
ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方式来组织. MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型(M).视图(V) ...
- Java线程池使用和常用参数(待续)
线程池怎么实现的,核心参数讲一讲? Executors是线程池的工厂类,通过调用它的静态方法如下: Executors.newCachedThreadPool(); Executors.newFixe ...
- 洛谷P1345 [USACO5.4]奶牛的电信 [最小割]
题目传送门 奶牛的电信 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,..., ...
- Django+Nginx+uwsgi搭建自己的博客(四)
由于在上篇博文中仍然介绍了相当多的后端部分,导致原定于上篇介绍的前端部分“跳票”到了这篇.在此篇博文中,我将会介绍Users App和主页的前端部分,从而形成我们博客的一个雏形. 在前端部分,我们主要 ...
- 从JDBC看Mybatis的设计
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法. 六 ...
- hdu 1158 dp Employment Planning
Employment Planning Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u ...
import com.jacob.activeX.ActiveXComponent;
public class ExcelDispatchTest {
public static void main(String[] args) {
}