下面是我写的类
环境是jacob1.10 ,jdk1.4 ,win/sys32/jacob.dll 都配置好了!问题:是这个类可以进行替换word中的标记但是不能批量替换,每次都是在同一个位置替换,请给予指点应该怎么样改一下?
package com.kela.util;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class Test {
String inFile = ""; String tpFile = ""; public Test() {
this.inFile = "D:\\project\\java_word\\java_word\\wordtemplet.doc"; this.tpFile = "D:\\project\\java_word\\java_word\\wordtemplet3.doc";
} public void replaceWord(String befroeword, String afterword,
String[] oldText, String[] newText) {
// 启动word,生成一个ActivexComponent对象
ActiveXComponent app = new ActiveXComponent("Word.Application");

this.inFile = befroeword;

this.tpFile = afterword; boolean flag = false; Dispatch xlo = app.getObject();

//this.oldText = oldcontent;

//this.newText = newcontent; boolean visible = true; String bookMarkKey = "LB_KJGG"; try {
// 设置word不可见

app.setProperty("Visible", new Variant(visible));

Dispatch docs = app.getProperty("Documents").toDispatch();
Dispatch doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { inFile, new Variant(false),
new Variant(true) }, new int[1]).toDispatch(); // 打开word文件



// 在word2003的vba文档中application有UserName属性。

String userName = app.getPropertyAsString("UserName");


Dispatch selection = app.getProperty("Selection").toDispatch();

// 得到一个组件

Dispatch find = app.call(selection, "Find").toDispatch();

// 查找什么文本
for(int i=0;i<oldText.length;i++){
Dispatch.put(find, "Text", oldText[i]);

// 替换文本
Dispatch.call(find, "ClearFormatting");

Dispatch.put(find, "Text", oldText[i]);

Dispatch.call(find, "Execute");
Dispatch.put(selection, "Text", newText[i]);
Dispatch.call(find, "ClearFormatting");



}
// 把指定的值设置到指定的标签中去
Dispatch activeDocument = app.getProperty("ActiveDocument")
.toDispatch();
System.out.println("activedocument");
   
Dispatch bookMarks = app.call(activeDocument, "Books")
.toDispatch();



boolean bookMarkExist1 = Dispatch.call(bookMarks, "Exists",
bookMarkKey).toBoolean(); if (bookMarkExist1 == true) {
System.out.println("exists book!");
Dispatch rangeItem = Dispatch.call(bookMarks, "Item",
bookMarkKey).toDispatch();
System.out.println("range item!");
Dispatch range = Dispatch.call(rangeItem, "Range").toDispatch();
System.out.println("range !");
// 取标签的值
String bookMarkValue = Dispatch.get(range, "Text").toString();
bookMarkValue = "test";
if (bookMarkValue != null) {
Dispatch.put(range, "Text", new Variant(bookMarkValue));
} } else {
System.out.println("not exists book!");
}
    

    // 保存文件
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
tpFile, new Variant(0) }, new int[1]);

// 作为word格式保存到目标文件
Variant f = new Variant(false);

Dispatch.call(doc, "Close", f);
flag = true;

} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}
}
   
public static void main(String[] args) {
Test test = new Test();
String[] oldcontent={"a","b"};
String[] newcontent={"白云恒","白云恒1"};
test.replaceWord("D:\\project\\java_word\\java_word\\wordtemplet.doc","D:\\project\\java_word\\java_word\\wordtemplet3.doc",oldcontent,newcontent);
}
}