• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

java通过jacob调用word

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 46次 | 进入软件测试论坛讨论

领测软件测试网
  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[] {});    }

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网