实例代码如下:
import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; /** * jacob操作MSword类 * @author */ public class WordBean { // word文档 private Dispatch doc; // word运行程序对象 private ActiveXComponent word; // 所有word文档集合 private Dispatch documents; // 选定的范围或插入点 private Dispatch selection; private boolean saveOnExit= true; public WordBean()throws Exception{ if (word == null) { word = new ActiveXComponent("Word.Application"); word.setProperty("Visible", new Variant(false)); //不可见打开word word.setProperty("AutomationSecurity", new Variant(3)); //禁用宏 } if (documents == null) documents = word.getProperty("Documents").toDispatch(); } /** * 设置退出时参数 * * @param saveOnExit * boolean true-退出时保存文件,false-退出时不保存文件 */ public void setSaveOnExit(boolean saveOnExit) { this.saveOnExit= saveOnExit; } /** * 创建一个新的word文档 * */ public void createNewDocument() { doc = Dispatch.call(documents, "Add").toDispatch(); selection = Dispatch.get(word, "Selection").toDispatch(); } /** * 打开一个已存在的文档 * * @param docPath */ public void openDocument(String docPath) { closeDocument(); doc = Dispatch.call(documents, "Open", docPath).toDispatch(); selection = Dispatch.get(word, "Selection").toDispatch(); } /** * 打开一个保护文档, * @param docPath-文件全名 * @param pwd-密码 */ public void openDocumentOnlyRead(String docPath, String pwd)throws Exception { closeDocument(); // doc = Dispatch.invoke(documents, "Open", Dispatch.Method, // new Object[]{docPath, new Variant(false), new Variant(true), new Variant(true), pwd}, // new int[1]).toDispatch();//打开word文件 doc = Dispatch.callN(documents, "Open", new Object[]{docPath, new Variant(false), new Variant(true), new Variant(true), pwd, "", new Variant(false)}).toDispatch(); selection = Dispatch.get(word, "Selection").toDispatch(); } public void openDocument(String docPath, String pwd)throws Exception { closeDocument(); doc = Dispatch.callN(documents, "Open", new Object[]{docPath, new Variant(false), new Variant(false), new Variant(true), pwd}).toDispatch(); selection = Dispatch.get(word, "Selection").toDispatch(); } /** * 把选定的内容或插入点向上移动 * * @param pos * 移动的距离 */ public void moveUp(int pos) { if (selection == null) selection = Dispatch.get(word, "Selection").toDispatch(); for (int i = 0; iparagraphsIndex && 0
//更新目录并自动保存办法
/**启动word进程*/ ActiveXComponent app = new ActiveXComponent("Word.Application"); app.setProperty("Visible", new Variant(false)); Dispatch docs = app.getProperty("Documents").toDispatch(); /**打开word文档*/ Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[] { "D:/aaa/a.doc", new Variant(false), new Variant(false) }, new int[1]).toDispatch(); Dispatch activeDocument = app.getProperty("ActiveDocument").toDispatch(); /**获取目录*/ Dispatch tablesOfCOntents= Dispatch.get(activeDocument,"TablesOfContents").toDispatch(); /**获取第一个目录。若有多个目录,则传递对应的参数*/ Variant tablesOfCOntent= Dispatch.call(tablesOfContents, "Item", new Variant(1)); /**更新目录,有两个方法:Update 更新域,UpdatePageNumbers 只更新页码*/ Dispatch toc = tablesOfContent.toDispatch(); toc.call(toc, "Update"); /**另存为*/ /**关闭word文档*/ Dispatch.call(doc, "Save"); Dispatch.call(doc, "Close", new Variant(-1)); /**退出word进程*/ app.invoke("Quit", new Variant[] {});
总结:
本文关于Java编程实现调用com操作Word方法的介绍就到这里,希望对大家有所帮助。如果有什么问题可以留言,小编会及时回复大家的。