您的位置:首页 > 编程语言 > Java开发

java控制 添加图片到word

2008-10-18 10:50 651 查看
开始做这个功能的时候无从下手,对于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();

}
}

}
呵呵,是不是很简单了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐