轻松架起Java连接COM对象的桥梁(续二)

原创 2003年06月26日 10:05:00

  本来没想到自己会为《轻松架起Java连接COM对象的桥梁》作续,而今还写了续二,可知我们网络上探讨技术的网友们还是挺多的,非常欣慰!这次内容是利用jacob实现在word文档中替换字符串。关于jacob的使用这里不详述,请见《轻松架起Java连接COM对象的桥梁》,具体实现如下:
import com.jacob.com.*;
import com.jacob.activeX.*;

public class Exam_9 {
 
 public static void main(String[] args) {
   
  ActiveXComponent app = new ActiveXComponent("Word.Application");//启动word
  String inFile = "H://Majix-1_2_2_full//sample//my.doc";//要替换的word文件
  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(false)}, new int[1]).toDispatch();//打开word文件,注意这里第三个参数要设为false,这个参数表示是否以只读方式打开,因为我们要保存原文件,所以以可写方式打开。
   Object content = Dispatch.get(doc, "Content").toDispatch();//提取word文档内容对象
   Object finder = Dispatch.get(content, "Find").toDispatch();//提取find对象,也就查找替换的那个对象
   Variant f = new Variant(false);
   
   boolean rt = true;
   while ( rt ) { 
    rt = Dispatch.invoke(finder,"Execute", Dispatch.Method, new Object[]{"Old", f, f, f, f, f, f, f, f, "New", new Variant(true)}, new int[1]).toBoolean();//替换Old ---> New
   }
   
   Dispatch.call(doc,"Save");//保存
   Dispatch.call(doc, "Close", f);
   flag = true;
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   app.invoke("Quit", new Variant[] {});
  }
 }
}

有疑问联系zlyperson@163.net

18.可连接对象和连接点原理

讲解可连接对象和连接点原理,说明实现一个可连接对象需要做的事情。
  • wenzhou1219
  • wenzhou1219
  • 2016年07月16日 21:04
  • 723

连接COM与.NET的桥梁(二)——COM服务器的P/Invoke方式

这是传统的 COM 知识,如果对这部分内容不清楚,可以去看 杨老师 的个人专栏,那里有非常棒的教程,我就不在这里废话了^_^ 我不细说可并不代表这部分不重要,恰恰相反,如果读者对这部分很熟悉,就会发...
  • JasonLiao909
  • JasonLiao909
  • 2016年01月28日 18:21
  • 399

连接COM与.NET的桥梁(三)——COM服务器的COM Interop方式

本节部分内容要求读者熟悉COM的消息调用原理,原理请参见杨老师的 专栏文章。...
  • JasonLiao909
  • JasonLiao909
  • 2016年01月28日 21:25
  • 209

《JAVA与模式》之桥梁模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述桥梁(Bridge)模式的:   桥梁模式是对象的结构模式。又称为柄体(Handle and Body)模式或接口(Interface)模式。桥...
  • u011068702
  • u011068702
  • 2016年01月15日 00:53
  • 603

连接COM与.NET的桥梁(一)——预备知识

由于传统的COM技术使用静态的非托管编程,而.net使用动态的托管编程,所以这个题目本质上讨论的是托管与非托管代码之间的互操作中的一个特例。目前的 .net v2.0 提供以下 三种互操作: 模块级别...
  • JasonLiao909
  • JasonLiao909
  • 2016年01月28日 17:59
  • 215

java--IO流-文件的续写

/* 文件续写 */ import java.io.*; //导入IO包 class FileWriterDemo3 { public static void main...
  • qiuxuewei2012
  • qiuxuewei2012
  • 2013年08月10日 10:49
  • 2261

virtualbox创建com对象失败(解决方法)

virtualbox创建com对象失败(解决方法) 试过网上的好几个方法都不行,最后结合了两种办法才搞定。 方法一:(不能完全解决问题) ①对VirtualBox的图标点击右键->属性->兼容性; ②...
  • mingmingzhizhonging
  • mingmingzhizhonging
  • 2016年03月10日 14:09
  • 21197

VirtualBox 创建com对象失败

Genymotion大家应该都知道,是我们开发者的一个神器啊,除了不能测试视频和动态图片,其它的都是比较方便,还有它的版本的全面性,是个好东西。但是我最近使用的时候遇到了一个坑爹的问题,找了网上的一圈...
  • u011625768
  • u011625768
  • 2015年11月09日 16:06
  • 350

【COM原理和应用】2、COM对象和接口

1、COM对象 在客户程序与组件交互的过程中,COM组件将以COM对象形式封装的实体提供给客户程序。...
  • shaqoneal
  • shaqoneal
  • 2015年02月04日 17:56
  • 835

COM编程精彩实例--COM对象

创建一个COM对象的简单过程: 1)调用COM API接口 ::CoCreateInstance(),可以直接调用或通过一个已经包装的c++类调用。这个调用需要指定两个ID,一个是要实例化的类的ID...
  • zang141588761
  • zang141588761
  • 2016年12月20日 15:28
  • 678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:轻松架起Java连接COM对象的桥梁(续二)
举报原因:
原因补充:

(最多只允许输入30个字)