用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();
}
}
}
呵呵,是不是很简单了。