java控制 添加图片到word

  开始做这个功能的时候无从下手,对于jacob 中那个Selection在封装jar(offic_wrapper.jar)包中怎么的也得不到正确应用,总是提示空指针错误。

    用word做的宏中都有Selection这个东西去找的,总以为在封装类里面也都是那么找的, 现在才发现我陷入了一个误区,既然他已经给我封装了类,jacob使用selection是为了找到document下的每个对象,而在封装包里,他就可以直接去用你想要用的对象,去调用他下面的方法,根本就不需要再用selection去找。

源代码:
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;


public class testP {

/**
* @param args
*/
public static void main(String[] args) {
   // TODO Auto-generated method stub


   ActiveXComponent app = new ActiveXComponent("Word.Application");   // 启动word
   try{
   Dispatch.put(app, "Visible",new Variant(true));//设置word应用程序可见,设置为false,则操作在后台进行
   Dispatch documents =Dispatch.get(app,"Documents").toDispatch();//此处创建一个Documents,是因为在word里面操作新建文档的时候是调用的Documents的Add方法
   Dispatch document=Dispatch.call(documents,"Add").toDispatch();//创建新文档
   Dispatch selection=app.getProperty("Selection").toDispatch();// 获得对Selection组件
     Dispatch picture=Dispatch.call(selection,"InlineShapes").toDispatch();//得到InlineShapes,因为插入图片是在该对象下的
   Dispatch.invoke(picture, "AddPicture",Dispatch.Method,new Object[]{"d://My Documents//我的图片//褐红.jpg",new Variant(false),new Variant(true)},new int[1]).toDispatch();
   //Dispatch.put(picture, "Text","");
   Dispatch.call(document,"SaveAs","d://aa//word.doc");   // 保存
   Dispatch.call(document, "Close", new Variant(false));
   }catch(Exception e){
    e.printStackTrace();
   }finally{
   app.invoke("Quit", new Variant[] {});
   app.safeRelease();
   }
   }
}

而经过封装类包后,我的代码就是:

import org.nethawker.word11.Application;
import org.nethawker.word11.Document;
import org.nethawker.word11.Documents;
import org.nethawker.word11.Range;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;


public class testj {

/**
* @param args
*/
private static Application objWord;
private static Documents documents;
private static Document document;

public static void main(String[] args) {
   // TODO Auto-generated method stub
     objWord = new Application();
        //objWord.setScreenUpdating(false);
        objWord.setVisible(true);
        documents = objWord.getDocuments();
        document = documents.add();

   try{
   
  
    Range range = document.getParagraphs().add().getRange();
  
    range.getInlineShapes().addPicture("d://My Documents//我的图片//褐红.jpg",new Variant(true),new Variant(false));

        Thread.sleep(5000);
            document.saveAs(new Variant("D://aa//wordTest.doc"));
            objWord.quit();
    }catch(Exception e){
     e.printStackTrace();
    
    }
}

}
呵呵,是不是很简单了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值