日期:2014-05-17 浏览次数:20847 次
此内容仅支持Window系统?jacob-1.15-M4-x86.dll
?
一、一般应用于使用Word模版中的标签进行内容替换
?
?
String templetPath = ""; //模版文件
String otPath = ""; //保存文件
GF_JacobUtil word = new GF_JacobUtil();
try {
//是否显示打开word
word.openWord(false);
//打开模版文件
word.openDocument(templetPath);
//替换书签内容
word.replaceBookMark("Prj_Name", "项目");
//保存到path
word.saveFileAs(otPath );
} catch (Exception ex) {
ex.printStackTrace();
} finally {
//关闭Word
word.closeDocument();
word.closeWord();
}
? ? 这个是网上前人总结的一个工具类,稍微修改
?
import java.util.ArrayList;
import java.util.List;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public class GF_JacobUtil {
// 建立一個word物件
private ActiveXComponent MsWordApp = null;
// 建立兩個word組件
private Dispatch document = null;
// selection插入点
private Dispatch selection = null;
// content是word的文档内容
private Dispatch content;
// repalceStr是word的替换对象
private Dispatch repalceStr;
// 建構子
public GF_JacobUtil() {
super();
}
/**
* 開啟word檔案
*
* @param makeVisible
* 顯示不顯示(true:顯示;false:不顯示)
*
*/
public void openWord(boolean makeVisible) {
// 启动com的线程
ComThread.InitSTA();
// 打開word(如果word未開啟時)
if (MsWordApp == null) {
MsWordApp = new ActiveXComponent("Word.Application");
}
// 設置word是可見或不可見(true:顯示;false:不顯示)
Dispatch.put(MsWordApp, "Visible", new Variant(makeVisible));
}
/**
* 建立word的文本內容
*
*/
public void createNewDocument() {
// 建立一個Dispatch物件
Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch();
document = Dispatch.call(documents, "Add").toDispatch();
selection = MsWordApp.getProperty("Selection").toDispatch();
}
/**
* 打开文件
*
* @param inputDoc
* 要打开的文件,全路径
* @return Dispatch 打开的文件
*/
public void openDocument(String inputDoc) {
// 建立一個Dispatch物件
Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch();
document = Dispatch.call(documents, "Open", inputDoc).toDispatch();
selection = MsWordApp.getProperty("Selection").toDispatch();
}
/**
* 选定内容
*
* @return Dispatch 选定的范围或插入点
*/
public Dispatch select() {
return MsWordApp.getProperty("Selection").toDispatch();
}
/**
* 把选定内容或插入点向上移动
*
* @param selection
* 要移动的内容
* @param count
* 移动的距离
*/
public void moveUp(Dispatch selection, int count) {
for (int i = 0; i < count; i++)
Dispatch.call(selection, "MoveUp");
}
/**
* 把选定内容或插入点向下移动
*
* @param selection
* 要移动的内容
* @param count
* 移动的距离
*/
public void moveDown(Dispatch selection, int count) {
for (int i = 0; i < count; i++)
Dispatch.call(selection, "MoveDown");
}
/**
* 把选定内容或插入点向左移动
*
* @param selection
* 要移动的内容
* @param count
* 移动的距离
*/
public void moveLeft(Dispatch selection, int count) {
for (int i = 0; i < count; i++)
Dispatch.call(selection, "MoveLeft");
}
/**
* 把选定内容或插入点向右移动
*
* @param selection
* 要移动的内容
* @param count
* 移动的距离
*/
public void moveRight(Dispatch selection, int count) {
for (int i = 0; i < count; i++)
Dispatch.call(selection, "MoveRight");
}
/**
* 把插入点移动到文件首位置
*
* @param selection
* 插入点
*/
public void moveStart(Dispatch selection) {
Dispatch.call(selection, "HomeKey", new Variant(6));
}
/**
* 从选定内容或插入点开始查找文本
*
* @param selection
* 选定内容
* @param toFindText
* 要查找的文本
* @return boolean true-查找到并选中该文本,false-未查找到文本
*/
public boolean find(Dispatch selection, String toFindText) {
// 从selection所在位置开始查询
Dispatch find = Dispatch.call(selection, "Find").toDispatch();
// 设置要查找的内容
Dispatch.put(find, "Text", toFindText);
// 向前查找
Dispatch.put(find, "Forward", "True");
// 设置