jacob.jar 操作word文件 添加水印、图片
1.准备jacob.jar包和dll文件
将jacob.jar引入到工程,
64位: 将jacob-1.17-M2-x64.dll 放在C:\Windows\System32下
32位:将jacob-1.17-M2-x86.dll 放在C:\Windows\SysWOW64下
若上述位置不生效,可尝试放在jdk安装位置:
将jacob-1.17-M2-x64.dll放在C:\Program Files\Java\jdk1.7.0_25\jre\bin下,将jacob.jar放在C:\Program Files\Java\jdk1.7.0_25\jre\lib\ext下
2.编写工具类
import java.io.File;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
public final class WaterMarkUtilOffice {
public WaterMarkUtilOffice() {
}
private static WaterMarkUtilOffice instance;
private Dispatch aDoc = null;//用于存储一个文档:比如新增一个文档时返回,新增的文档
private Dispatch activeWindow = null;//当前活动窗口
private Dispatch docSelection = null;//存储当前被选中文档
private Dispatch wordDocs = null;//存储所有的文档
private String fileName;
private ActiveXComponent wordApp;//Word对象
public final static synchronized WaterMarkUtilOffice getInstance() {
if (instance == null){
instance = new WaterMarkUtilOffice();
}
return instance;
}
/*** 初始化Word对象*/
public boolean initWordApp() {
boolean retFlag = false;
//初始化com线程【相当于打开冰箱门,准备放大箱】
//使用结束后要调用 realease方法关闭线程【相当于关上冰箱门】
ComThread.InitSTA();
wordApp = new ActiveXComponent("Word.Application");// 初始化word应用程序,初始化表格是:Excel.Application
try {
wordApp.setProperty("Visible", new Variant(false));//配置启动word时是显示执行还是隐式执行
wordDocs = wordApp.getProperty("Documents").toDispatch();// 获取word所有文档对象
retFlag = true;
} catch (Exception e) {
retFlag = false;
e.printStackTrace();
}
return retFlag;
}
/**打开一个已存在的文档*/
public void openDocument(String docPath) {
if (this.aDoc != null) {
this.closeDocument();
}
aDoc = Dispatch.call(wordDocs,"Open",new Variant(docPath)).toDispatch();//docPath要打开的文档的详细地址
docSelection = Dispatch.get(wordApp, "Selection").toDispatch();//获得该文档对象,并返回
}
/** 取得活动窗体对象*/
public void getActiveWindow() {
activeWindow = wordApp.getProperty("ActiveWindow").toDispatch();// 取得活动窗体对象
}
/***创建一个新的word文档*/
public void createNewDocument() {
aDoc = Dispatch.call(wordDocs, "Add").toDispatch();//创建一个新的word文档,并返回
docSelection = Dispatch.get(wordApp, "Selection").toDispatch();//获得该文档对象,并返回
}