jacob(word)包括java.dll,jacob.jar下载及相关操作!1

来源:百度文库 编辑:神马文学网 时间:2024/04/26 17:05:25
jacob(word)包括java.dll,jacob.jar下载及相关操作!
jcob的原理是通过一个接口来操作word的activex对象。现在的版本是1.9。
首先:把jcob.dll拷贝到system32目录下。
其次:把jcob.jar的路径放置在classpath目录下。
最后:编写访问类。


public static void main(String[] args) {
  //启动word,生成一个ActivexComponent对象
  ActiveXComponent app = new ActiveXComponent("Word.Application");
  //要转换的word文件
  String inFile = "D:\\project\\java_word\\java_word\\wordtemplet.doc";
  //要报存的目标文件
  String tpFile ="D:\\project\\java_word\\java_word\\wordtemplet3.doc";
  boolean flag = false;
  Dispatch xlo = app.getObject();
  String oldText="1234";
  String newText="test";
  boolean visible=false;
  String bookMarkKey="LB_KJGG";
  try {
    //设置word不可见
    app.setProperty("Visible", new Variant(visible));
    //log.info("设置word不可见成功!");
    System.out.println("设置word不可见成功!");
    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");
    System.out.println("用户名:"+userName);
    Dispatch selection=app.getProperty("Selection").toDispatch();
    //得到一个组件
    System.out.println("Selection");
    Dispatch find = app.call(selection, "Find").toDispatch();

    //查找什么文本
    Dispatch.put(find, "Text", oldText);
    //替换文本
    Dispatch.call(find,"ClearFormatting");
    Dispatch.put(find, "Text", oldText);
    Dispatch.call(find, "Execute");
    Dispatch.put(selection, "Text", newText);
    // Dispatch.call(app, "SaveAs", inFile);
    System.out.println("replace");
   
    //把指定的值设置到指定的标签中去
    Dispatch activeDocument=app.getProperty("ActiveDocument").toDispatch();
    System.out.println("activedocument");
    Dispatch bookMarks = app.call(activeDocument, "Bookmarks").toDispatch();
    System.out.println("bookmarks");
    boolean bookMarkExist1=Dispatch.call(bookMarks,"Exists",bookMarkKey).toBoolean();
    if(bookMarkExist1==true){
      System.out.println("exists bookmark!");
      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 bookmark!");
    }
    //保存文件
    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[] {});
  }