java jacob 操作word文档

lenhan12345 贡献于2012-10-15

作者 ShanTaoY  创建于2011-04-13 03:24:00   修改者ShanTaoY  修改于2011-04-13 03:36:00字数21195

文档摘要:java jacob操作word文档,进行写操作,如生成表格,添加图片。
关键词:

java jacob 操作word 文档,进行写操作,如生成表格,添加 图片 jacob-1.15-M3.zip  jacob-1.15-M3-x86.dll copy 到c:\\windows\system32 引入jacob.jar 示例代码 import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; class WordBean { // 代表一个word 程序 private ActiveXComponent MsWordApp = null; // 代表进行处理的word 文档 private Dispatch document = null; public WordBean() { // Open Word if we\'ve not done it already if (MsWordApp == null) { MsWordApp = new ActiveXComponent("Word.Application"); } } // 设置是否在前台打开 word 程序 , public void setVisible(boolean visible) { MsWordApp.setProperty("Visible", new Variant(visible)); // 这一句作用相同 // Dispatch.put(MsWordApp, "Visible", new Variant(visible)); } // 创建一个新文档 public void createNewDocument() { // Find the Documents collection object maintained by Word // documents表示word的所有文档窗口,(word是多文档应用程序) Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); // Call the Add method of the Documents collection to create // a new document to edit document = Dispatch.call(documents, "Add").toDispatch(); } // 打开一个存在的word文档,并用document 引用 引用它 public void openFile(String wordFilePath) { // Find the Documents collection object maintained by Word // documents表示word的所有文档窗口,(word是多文档应用程序) Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); document = Dispatch.call(documents, "Open", wordFilePath, new Variant(true)/* 是否进行转换ConfirmConversions */, new Variant(false)/* 是否只读 */).toDispatch(); // document = Dispatch.invoke(documents, "Open", Dispatch.Method, // new Object[] { wordFilePath, new Variant(true), // new Variant(false) // }, new int[1]).toDispatch(); } // 向 document 中插入文本内容 public void insertText(String textToInsert) { // Get the current selection within Word at the moment. // a new document has just been created then this will be at // the top of the new doc 获得选 中的内容,如果是一个新创建的文件,因里面无内容,则光标应处于文件开头处 Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 取消选中,应该就是移动光标 ,否则 新添加的内容会覆盖选中的内容 Dispatch.call(selection, "MoveRight", new Variant(1), new Variant(1)); // Put the specified text at the insertion point Dispatch.put(selection, "Text", textToInsert); // 取消选中,应该就是移动光标 Dispatch.call(selection, "MoveRight", new Variant(1), new Variant(1)); } // 向文档中添加 一个图片, public void insertJpeg(String jpegFilePath) { Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); Dispatch image = Dispatch.get(selection, "InLineShapes").toDispatch(); Dispatch.call(image, "AddPicture", jpegFilePath); } // 段落的处理,插入格式化的文本 public void insertFormatStr(String text) { Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); // 取得word文件的内容 Dispatch.call(wordContent, "InsertAfter", text);// 插入一个段落到最后 Dispatch paragraphs = Dispatch.get(wordContent, "Paragraphs") .toDispatch(); // 所有段落 int paragraphCount = Dispatch.get(paragraphs, "Count").changeType( Variant.VariantInt).getInt();// 一共的段落数 // 找到刚输入的段落,设置格式 Dispatch lastParagraph = Dispatch.call(paragraphs, "Item", new Variant(paragraphCount)).toDispatch(); // 最后一段(也就是刚插入的) // Range 对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义 Dispatch lastParagraphRange = Dispatch.get(lastParagraph, "Range") .toDispatch(); Dispatch font = Dispatch.get(lastParagraphRange, "Font").toDispatch(); Dispatch.put(font, "Bold", new Variant(true)); // 设置为黑体 Dispatch.put(font, "Italic", new Variant(true)); // 设置为斜体 Dispatch.put(font, "Name", new Variant("宋体")); // Dispatch.put(font, "Size", new Variant(12)); // 小四 Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); Dispatch.call(selection, "TypeParagraph");// 插入一个空行 Dispatch alignment = Dispatch.get(selection, "ParagraphFormat") .toDispatch();// 段落格式 Dispatch.put(alignment, "Alignment", "2"); // (1:置中 2:靠右 3:靠左) } // word 中在对表格进行遍历的时候 ,是先列后行 先column 后cell // 另外下标从1开始 public void insertTable(String tableTitle, int row, int column) { Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.call(selection, "TypeText", tableTitle); // 写入标题内容 // 标题格行 Dispatch.call(selection, "TypeParagraph"); // 空一行段落 Dispatch.call(selection, "TypeParagraph"); // 空一行段落 Dispatch.call(selection, "MoveDown"); // 游标往下一行 // 建立表格 Dispatch tables = Dispatch.get(document, "Tables").toDispatch(); // int count = Dispatch.get(tables, // "Count").changeType(Variant.VariantInt).getInt(); // document中的表格数量 // Dispatch table = Dispatch.call(tables, "Item", new Variant( // 1)).toDispatch();//文档中第一个表格 Dispatch range = Dispatch.get(selection, "Range").toDispatch();// /当前光标位置或者选中的区域 Dispatch newTable = Dispatch.call(tables, "Add", range, new Variant(row), new Variant(column), new Variant(1)) .toDispatch(); // 设置row,column,表格外框宽度 Dispatch cols = Dispatch.get(newTable, "Columns").toDispatch(); // 此表的所有列, int colCount = Dispatch.get(cols, "Count").changeType( Variant.VariantInt).getInt();// 一共有多少列 实际上这个数==column System.out.println(colCount + "列"); for (int i = 1; i <= colCount; i++) { // 循环取出每一列 Dispatch col = Dispatch.call(cols, "Item", new Variant(i)) .toDispatch(); Dispatch cells = Dispatch.get(col, "Cells").toDispatch();// 当前列中单元格 int cellCount = Dispatch.get(cells, "Count").changeType( Variant.VariantInt).getInt();// 当前列中单元格数 实际上这个数等于row for (int j = 1; j <= cellCount; j++) {// 每一列中的单元格数 // Dispatch cell = Dispatch.call(cells, "Item", new // Variant(j)).toDispatch(); //当前单元格 // Dispatch cell = Dispatch.call(newTable, "Cell", new // Variant(j) , new Variant(i) ).toDispatch(); //取单元格的另一种方法 // Dispatch.call(cell, "Select");//选中当前单元格 // Dispatch.put(selection, "Text", // "第"+j+"行,第"+i+"列");//往选中的区域中填值,也就是往当前单元格填值 putTxtToCell(newTable, j, i, "第" + j + "行,第" + i + "列");// 与上面四句的作用相同 } } } /** */ /** * 在指定的单元格里填写数据 * * @param tableIndex * @param cellRowIdx * @param cellColIdx * @param txt */ public void putTxtToCell(Dispatch table, int cellRowIdx, int cellColIdx, String txt) { Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx), new Variant(cellColIdx)).toDispatch(); Dispatch.call(cell, "Select"); Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.put(selection, "Text", txt); } /** */ /** * 在指定的单元格里填写数据 * * @param tableIndex * @param cellRowIdx * @param cellColIdx * @param txt */ public void putTxtToCell(int tableIndex, int cellRowIdx, int cellColIdx, String txt) { // 所有表格 Dispatch tables = Dispatch.get(document, "Tables").toDispatch(); // 要填充的表格 Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex)) .toDispatch(); Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx), new Variant(cellColIdx)).toDispatch(); Dispatch.call(cell, "Select"); Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.put(selection, "Text", txt); } // 合并两个单元格 public void mergeCell(Dispatch cell1, Dispatch cell2) { Dispatch.call(cell1, "Merge", cell2); } public void mergeCell(Dispatch table, int row1, int col1, int row2, int col2) { Dispatch cell1 = Dispatch.call(table, "Cell", new Variant(row1), new Variant(col1)).toDispatch(); Dispatch cell2 = Dispatch.call(table, "Cell", new Variant(row2), new Variant(col2)).toDispatch(); mergeCell(cell1, cell2); } public void mergeCellTest() { Dispatch tables = Dispatch.get(document, "Tables").toDispatch(); int tableCount = Dispatch.get(tables, "Count").changeType( Variant.VariantInt).getInt(); // document中的表格数量 Dispatch table = Dispatch.call(tables, "Item", new Variant(tableCount)) .toDispatch();// 文档中最后一个table mergeCell(table, 1, 1, 1, 2);// 将table 中x=1,y=1 与x=1,y=2的两个单元格合并 } // ======================================================== /** */ /** * 把选定的内容或光标插入点向上移动 * * @param pos * 移动的距离 */ public void moveUp(int pos) { Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 for (int i = 0; i < pos; i++) { // MoveDown MoveLeft moveRight // moveStart ( Dispatch.call(selection, "HomeKey", new Variant(6)); // ) // moveEnd Dispatch.call(selection, "EndKey", new Variant(6)); Dispatch.call(selection, "MoveUp"); } } /** */ /** * 从选定内容或插入点开始查找文本 * * @param toFindText * 要查找的文本 * @return boolean true-查找到并选中该文本,false-未查找到文本 */ public boolean find(String toFindText) { if (toFindText == null || toFindText.equals("")) return false; Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 // 从selection所在位置开始查询 Dispatch find = Dispatch.call(selection, "Find").toDispatch(); // 设置要查找的内容 Dispatch.put(find, "Text", toFindText); // 向前查找 Dispatch.put(find, "Forward", "True"); // 设置格式 Dispatch.put(find, "Format", "True"); // 大小写匹配 Dispatch.put(find, "MatchCase", "True"); // 全字匹配 Dispatch.put(find, "MatchWholeWord", "True"); // 查找并选中 return Dispatch.call(find, "Execute").getBoolean(); } /** */ /** * 把选定选定内容设定为替换文本 * * @param toFindText * 查找字符串 * @param newText * 要替换的内容 * @return */ public boolean replaceText(String toFindText, String newText) { if (!find(toFindText)) return false; Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.put(selection, "Text", newText); return true; } public void printFile() { // Just print the current document to the default printer Dispatch.call(document, "PrintOut"); } // 保存文档的更改 public void save() { Dispatch.call(document, "Save"); } public void saveFileAs(String filename) { Dispatch.call(document, "SaveAs", filename); } public void closeDocument() { // Close the document without saving changes // 0 = wdDoNotSaveChanges // -1 = wdSaveChanges // -2 = wdPromptToSaveChanges Dispatch.call(document, "Close", new Variant(0)); document = null; } public void closeWord() { Dispatch.call(MsWordApp, "Quit"); MsWordApp = null; document = null; } // 设置wordApp打开后窗口的位置 public void setLocation() { Dispatch activeWindow = Dispatch.get(MsWordApp, "Application") .toDispatch(); Dispatch.put(activeWindow, "WindowState", new Variant(1)); // 0=default // 1=maximize // 2=minimize Dispatch.put(activeWindow, "Top", new Variant(0)); Dispatch.put(activeWindow, "Left", new Variant(0)); Dispatch.put(activeWindow, "Height", new Variant(600)); Dispatch.put(activeWindow, "width", new Variant(800)); } } public class JacobTest2 { public static void createANewFileTest() { WordBean wordBean = new WordBean(); // word.openWord(true);// 打开 word 程序 wordBean.setVisible(true); wordBean.createNewDocument();// 创建一个新文档 wordBean.setLocation();// 设置打开后窗口的位置 wordBean.insertText("你好");// 向文档中插入字符 wordBean.insertJpeg("D:" + File.separator + "a.jpg"); // 插入图片 // 如果 ,想保存文件,下面三句 // word.saveFileAs("d:\\a.doc"); // word.closeDocument(); // word.closeWord(); } public static void openAnExistsFileTest() { WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.openFile("d:\\a.doc"); wordBean.insertJpeg("D:" + File.separator + "a.jpg"); // 插入图片(注意刚打开的word // ,光标处于开头,故,图片在最前方插入) wordBean.save(); wordBean.closeDocument(); wordBean.closeWord(); } public static void insertFormatStr(String str) { WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.createNewDocument();// 创建一个新文档 wordBean.insertFormatStr(str);// 插入一个段落,对其中的字体进行了设置 } public static void insertTableTest() { WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.createNewDocument();// 创建一个新文档 wordBean.setLocation(); wordBean.insertTable("表名", 3, 2); wordBean.saveFileAs("d:\\table.doc"); wordBean.closeDocument(); wordBean.closeWord(); } public static void mergeTableCellTest() { insertTableTest();//生成d:\\table.doc WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.openFile("d:\\table.doc"); wordBean.mergeCellTest(); } public static void main(String[] args) { // 进行测试前要保证d:\\a.jpg 图片文件存在 // createANewFileTest();//创建一个新文件 // openAnExistsFileTest();// 打开一个存在 的文件 // insertFormatStr("格式 化字符串");//对字符串进行一定的修饰 //insertTableTest();// 创建一个表格 mergeTableCellTest();// 对表格中的单元格进行合并 } } import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; class WordBean { // 代表一个word 程序 private ActiveXComponent MsWordApp = null; // 代表进行处理的word 文档 private Dispatch document = null; public WordBean() { // Open Word if we\'ve not done it already if (MsWordApp == null) { MsWordApp = new ActiveXComponent("Word.Application"); } } // 设置是否在前台打开 word 程序 , public void setVisible(boolean visible) { MsWordApp.setProperty("Visible", new Variant(visible)); // 这一句作用相同 // Dispatch.put(MsWordApp, "Visible", new Variant(visible)); } // 创建一个新文档 public void createNewDocument() { // Find the Documents collection object maintained by Word // documents表示word的所有文档窗口,(word是多文档应用程序) Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); // Call the Add method of the Documents collection to create // a new document to edit document = Dispatch.call(documents, "Add").toDispatch(); } // 打开一个存在的word文档,并用document 引用 引用它 public void openFile(String wordFilePath) { // Find the Documents collection object maintained by Word // documents表示word的所有文档窗口,(word是多文档应用程序) Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); document = Dispatch.call(documents, "Open", wordFilePath, new Variant(true)/* 是否进行转换ConfirmConversions */, new Variant(false)/* 是否只读 */).toDispatch(); // document = Dispatch.invoke(documents, "Open", Dispatch.Method, // new Object[] { wordFilePath, new Variant(true), // new Variant(false) // }, new int[1]).toDispatch(); } // 向 document 中插入文本内容 public void insertText(String textToInsert) { // Get the current selection within Word at the moment. // a new document has just been created then this will be at // the top of the new doc 获得选 中的内容,如果是一个新创建的文件,因里面无内容,则光标应处于文件开头处 Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 取消选中,应该就是移动光标 ,否则 新添加的内容会覆盖选中的内容 Dispatch.call(selection, "MoveRight", new Variant(1), new Variant(1)); // Put the specified text at the insertion point Dispatch.put(selection, "Text", textToInsert); // 取消选中,应该就是移动光标 Dispatch.call(selection, "MoveRight", new Variant(1), new Variant(1)); } // 向文档中添加 一个图片, public void insertJpeg(String jpegFilePath) { Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); Dispatch image = Dispatch.get(selection, "InLineShapes").toDispatch(); Dispatch.call(image, "AddPicture", jpegFilePath); } // 段落的处理,插入格式化的文本 public void insertFormatStr(String text) { Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); // 取得word文件的内容 Dispatch.call(wordContent, "InsertAfter", text);// 插入一个段落到最后 Dispatch paragraphs = Dispatch.get(wordContent, "Paragraphs") .toDispatch(); // 所有段落 int paragraphCount = Dispatch.get(paragraphs, "Count").changeType( Variant.VariantInt).getInt();// 一共的段落数 // 找到刚输入的段落,设置格式 Dispatch lastParagraph = Dispatch.call(paragraphs, "Item", new Variant(paragraphCount)).toDispatch(); // 最后一段(也就是刚插入的) // Range 对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义 Dispatch lastParagraphRange = Dispatch.get(lastParagraph, "Range") .toDispatch(); Dispatch font = Dispatch.get(lastParagraphRange, "Font").toDispatch(); Dispatch.put(font, "Bold", new Variant(true)); // 设置为黑体 Dispatch.put(font, "Italic", new Variant(true)); // 设置为斜体 Dispatch.put(font, "Name", new Variant("宋体")); // Dispatch.put(font, "Size", new Variant(12)); // 小四 Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); Dispatch.call(selection, "TypeParagraph");// 插入一个空行 Dispatch alignment = Dispatch.get(selection, "ParagraphFormat") .toDispatch();// 段落格式 Dispatch.put(alignment, "Alignment", "2"); // (1:置中 2:靠右 3:靠左) } // word 中在对表格进行遍历的时候 ,是先列后行 先column 后cell // 另外下标从1开始 public void insertTable(String tableTitle, int row, int column) { Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.call(selection, "TypeText", tableTitle); // 写入标题内容 // 标题格行 Dispatch.call(selection, "TypeParagraph"); // 空一行段落 Dispatch.call(selection, "TypeParagraph"); // 空一行段落 Dispatch.call(selection, "MoveDown"); // 游标往下一行 // 建立表格 Dispatch tables = Dispatch.get(document, "Tables").toDispatch(); // int count = Dispatch.get(tables, // "Count").changeType(Variant.VariantInt).getInt(); // document中的表格数量 // Dispatch table = Dispatch.call(tables, "Item", new Variant( // 1)).toDispatch();//文档中第一个表格 Dispatch range = Dispatch.get(selection, "Range").toDispatch();// /当前光标位置或者选中的区域 Dispatch newTable = Dispatch.call(tables, "Add", range, new Variant(row), new Variant(column), new Variant(1)) .toDispatch(); // 设置row,column,表格外框宽度 Dispatch cols = Dispatch.get(newTable, "Columns").toDispatch(); // 此表的所有列, int colCount = Dispatch.get(cols, "Count").changeType( Variant.VariantInt).getInt();// 一共有多少列 实际上这个数==column System.out.println(colCount + "列"); for (int i = 1; i <= colCount; i++) { // 循环取出每一列 Dispatch col = Dispatch.call(cols, "Item", new Variant(i)) .toDispatch(); Dispatch cells = Dispatch.get(col, "Cells").toDispatch();// 当前列中单元格 int cellCount = Dispatch.get(cells, "Count").changeType( Variant.VariantInt).getInt();// 当前列中单元格数 实际上这个数等于row for (int j = 1; j <= cellCount; j++) {// 每一列中的单元格数 // Dispatch cell = Dispatch.call(cells, "Item", new // Variant(j)).toDispatch(); //当前单元格 // Dispatch cell = Dispatch.call(newTable, "Cell", new // Variant(j) , new Variant(i) ).toDispatch(); //取单元格的另一种方法 // Dispatch.call(cell, "Select");//选中当前单元格 // Dispatch.put(selection, "Text", // "第"+j+"行,第"+i+"列");//往选中的区域中填值,也就是往当前单元格填值 putTxtToCell(newTable, j, i, "第" + j + "行,第" + i + "列");// 与上面四句的作用相同 } } } /** */ /** * 在指定的单元格里填写数据 * * @param tableIndex * @param cellRowIdx * @param cellColIdx * @param txt */ public void putTxtToCell(Dispatch table, int cellRowIdx, int cellColIdx, String txt) { Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx), new Variant(cellColIdx)).toDispatch(); Dispatch.call(cell, "Select"); Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.put(selection, "Text", txt); } /** */ /** * 在指定的单元格里填写数据 * * @param tableIndex * @param cellRowIdx * @param cellColIdx * @param txt */ public void putTxtToCell(int tableIndex, int cellRowIdx, int cellColIdx, String txt) { // 所有表格 Dispatch tables = Dispatch.get(document, "Tables").toDispatch(); // 要填充的表格 Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex)) .toDispatch(); Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx), new Variant(cellColIdx)).toDispatch(); Dispatch.call(cell, "Select"); Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.put(selection, "Text", txt); } // 合并两个单元格 public void mergeCell(Dispatch cell1, Dispatch cell2) { Dispatch.call(cell1, "Merge", cell2); } public void mergeCell(Dispatch table, int row1, int col1, int row2, int col2) { Dispatch cell1 = Dispatch.call(table, "Cell", new Variant(row1), new Variant(col1)).toDispatch(); Dispatch cell2 = Dispatch.call(table, "Cell", new Variant(row2), new Variant(col2)).toDispatch(); mergeCell(cell1, cell2); } public void mergeCellTest() { Dispatch tables = Dispatch.get(document, "Tables").toDispatch(); int tableCount = Dispatch.get(tables, "Count").changeType( Variant.VariantInt).getInt(); // document中的表格数量 Dispatch table = Dispatch.call(tables, "Item", new Variant(tableCount)) .toDispatch();// 文档中最后一个table mergeCell(table, 1, 1, 1, 2);// 将table 中x=1,y=1 与x=1,y=2的两个单元格合并 } // ======================================================== /** */ /** * 把选定的内容或光标插入点向上移动 * * @param pos * 移动的距离 */ public void moveUp(int pos) { Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 for (int i = 0; i < pos; i++) { // MoveDown MoveLeft moveRight // moveStart ( Dispatch.call(selection, "HomeKey", new Variant(6)); // ) // moveEnd Dispatch.call(selection, "EndKey", new Variant(6)); Dispatch.call(selection, "MoveUp"); } } /** */ /** * 从选定内容或插入点开始查找文本 * * @param toFindText * 要查找的文本 * @return boolean true-查找到并选中该文本,false-未查找到文本 */ public boolean find(String toFindText) { if (toFindText == null || toFindText.equals("")) return false; Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 // 从selection所在位置开始查询 Dispatch find = Dispatch.call(selection, "Find").toDispatch(); // 设置要查找的内容 Dispatch.put(find, "Text", toFindText); // 向前查找 Dispatch.put(find, "Forward", "True"); // 设置格式 Dispatch.put(find, "Format", "True"); // 大小写匹配 Dispatch.put(find, "MatchCase", "True"); // 全字匹配 Dispatch.put(find, "MatchWholeWord", "True"); // 查找并选中 return Dispatch.call(find, "Execute").getBoolean(); } /** */ /** * 把选定选定内容设定为替换文本 * * @param toFindText * 查找字符串 * @param newText * 要替换的内容 * @return */ public boolean replaceText(String toFindText, String newText) { if (!find(toFindText)) return false; Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); // 输入内容需要的对象 Dispatch.put(selection, "Text", newText); return true; } public void printFile() { // Just print the current document to the default printer Dispatch.call(document, "PrintOut"); } // 保存文档的更改 public void save() { Dispatch.call(document, "Save"); } public void saveFileAs(String filename) { Dispatch.call(document, "SaveAs", filename); } public void closeDocument() { // Close the document without saving changes // 0 = wdDoNotSaveChanges // -1 = wdSaveChanges // -2 = wdPromptToSaveChanges Dispatch.call(document, "Close", new Variant(0)); document = null; } public void closeWord() { Dispatch.call(MsWordApp, "Quit"); MsWordApp = null; document = null; } // 设置wordApp打开后窗口的位置 public void setLocation() { Dispatch activeWindow = Dispatch.get(MsWordApp, "Application") .toDispatch(); Dispatch.put(activeWindow, "WindowState", new Variant(1)); // 0=default // 1=maximize // 2=minimize Dispatch.put(activeWindow, "Top", new Variant(0)); Dispatch.put(activeWindow, "Left", new Variant(0)); Dispatch.put(activeWindow, "Height", new Variant(600)); Dispatch.put(activeWindow, "width", new Variant(800)); } } public class JacobTest2 { public static void createANewFileTest() { WordBean wordBean = new WordBean(); // word.openWord(true);// 打开 word 程序 wordBean.setVisible(true); wordBean.createNewDocument();// 创建一个新文档 wordBean.setLocation();// 设置打开后窗口的位置 wordBean.insertText("你好");// 向文档中插入字符 wordBean.insertJpeg("D:" + File.separator + "a.jpg"); // 插入图片 // 如果 ,想保存文件,下面三句 // word.saveFileAs("d:\\a.doc"); // word.closeDocument(); // word.closeWord(); } public static void openAnExistsFileTest() { WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.openFile("d:\\a.doc"); wordBean.insertJpeg("D:" + File.separator + "a.jpg"); // 插入图片(注意刚打开的word // ,光标处于开头,故,图片在最前方插入) wordBean.save(); wordBean.closeDocument(); wordBean.closeWord(); } public static void insertFormatStr(String str) { WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.createNewDocument();// 创建一个新文档 wordBean.insertFormatStr(str);// 插入一个段落,对其中的字体进行了设置 } public static void insertTableTest() { WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.createNewDocument();// 创建一个新文档 wordBean.setLocation(); wordBean.insertTable("表名", 3, 2); wordBean.saveFileAs("d:\\table.doc"); wordBean.closeDocument(); wordBean.closeWord(); } public static void mergeTableCellTest() { insertTableTest();//生成d:\\table.doc WordBean wordBean = new WordBean(); wordBean.setVisible(true); // 是否前台打开word 程序,或者后台运行 wordBean.openFile("d:\\table.doc"); wordBean.mergeCellTest(); } public static void main(String[] args) { // 进行测试前要保证d:\\a.jpg 图片文件存在 // createANewFileTest();//创建一个新文件 // openAnExistsFileTest();// 打开一个存在 的文件 // insertFormatStr("格式 化字符串");//对字符串进行一定的修饰 //insertTableTest();// 创建一个表格 mergeTableCellTest();// 对表格中的单元格进行合并 } } 出处:http://blog.csdn.net/jixiuffff/archive/2010/05/23/5618287.aspx

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档