1、java操作word精JAVA操作wordJava操作Microsoft Word之jacob(精)现在我们一起来看看,用Java如何操作Microsoft Word。jacob,官网是 这是一个开源的工具。最新版本1.7官方的解释是:The JACOB Project: A JAva-COM Bridge这是官方对下载文件的说明:jacob.jar: a JAR file for the java classes which you must add to your CLASSPATH. The package names replace com.ms with com.jacob (for
2、 example .Variant maps to .Variant.jacob.dll: a small Win32 DLL which you must add to your PATH.samples: provided in Java source and compiled form to demonstrate various features of the product. In particular, a set of wrapper classes for Microsoft ADO are provided as samples.开发环境:JDK 1.6MyEclipse E
3、nterprise Workbench Version: 7.0 Milestone-1Tomcat 5.5.27现在MyEclipse中新建一个项目jacob,将jacob的jar包放到该项目的类库中。我的jacob版本是1.14.3 。下面这一步非常重要,就是拷贝jacob目录中jacob-1.14.3-x86.dll文件到系统环境变量目录中一般情况就放在当前jdk中bin目录下。这里有一个MSWordManager 类,是jacob官方发布的工具类,里面有大多数Java操作MS Office的工具。package com.test;import java.sql.Connection;
4、import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List;import com.jacob.activeX.ActiveXComponent; import .Dispatch; import .Variant;public class MSWordManager / word文档 private Dispatch doc; / word运行程序对象 private ActiveXCo
5、mponent word; / 所有word文档集合 private Dispatch documents; / 选定的范围或插入点 private Dispatch selection; private boolean saveOnExit = true; /* */* * * param visible 为true表示word应用程序可见 */ public MSWordManager(boolean visible) if (word = null) word = new ActiveXComponent(Word.Application); word.setProperty(Visib
6、le, new Variant(visible); if (documents = null) documents = word.getProperty(Documents).toDispatch(); /* */* * 设置退出时参数 * * param saveOnExit boolean true-退出时保存文件,false-退出时不保存文件 */ public void setSaveOnExit(boolean saveOnExit) this.saveOnExit = saveOnExit; /* */* * 创建一个新的word文档 * */ public void create
7、NewDocument() 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.
8、get(word, Selection).toDispatch(); /* */* * 把选定的内容或插入点向上移动 * * param pos 移动的距离 */ public void moveUp(int pos) if (selection = null) selection = Dispatch.get(word, Selection).toDispatch(); for (int i = 0; i < pos; i+) Dispatch.call(selection, MoveUp); /* */* * 把选定的内容或者插入点向下移动 * * param pos 移动的距离 *
9、/ public void moveDown(int pos) if (selection = null) selection = Dispatch.get(word, Selection).toDispatch(); for (int i = 0; i < pos; i+) Dispatch.call(selection, MoveDown); /* */* * 把选定的内容或者插入点向左移动 * * param pos 移动的距离 */ public void moveLeft(int pos) if (selection = null) selection = Dispatch.g
10、et(word, Selection).toDispatch(); for (int i = 0; i < pos; i+) Dispatch.call(selection, MoveLeft); /* */* * 把选定的内容或者插入点向右移动 * * param pos 移动的距离 */ public void moveRight(int pos) if (selection = null) selection = Dispatch.get(word, Selection).toDispatch(); for (int i = 0; i < pos; i+) Dispatch.
11、call(selection, MoveRight); /* */* * 把插入点移动到文件首位置 * */ public void moveStart() if (selection = null) selection = Dispatch.get(word, Selection).toDispatch(); Dispatch.call(selection, HomeKey, new Variant(6); public void moveEnd() if (selection = null) selection = Dispatch.get(word, Selection).toDispa
12、tch(); Dispatch.call(selection, EndKey, new Variant(6); /* */* * 从选定内容或插入点开始查找文本 * * param toFindText 要查找的文本 * return boolean true-查找到并选中该文本,false-未查找到文本 */ public boolean find(String toFindText) if (toFindText = null | toFindText.equals() return false; / 从selection所在位置开始查询 Dispatch find = word.call
13、(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
14、).getBoolean(); /* */* * 把选定选定内容设定为替换文本 * * param toFindText 查找字符串 * param newText 要替换的内容 * return */ public boolean replaceText(String toFindText, String newText) if (!find(toFindText) return false; Dispatch.put(selection, Text, newText); return true; /* */* * 全局替换文本 * * param toFindText 查找字符串 * pa
15、ram newText 要替换的内容 */ public void replaceAllText(String toFindText, String newText) while (find(toFindText) Dispatch.put(selection, Text, newText); Dispatch.call(selection, MoveRight); /* */* * 在当前插入点插入字符串 * * param newText 要插入的新字符串 */ public void insertText(String newText) Dispatch.put(selection, T
16、ext, newText); /* */* * * param toFindText 要查找的字符串 * param imagePath 图片路径 * return */ public boolean replaceImage(String toFindText, String imagePath) if (!find(toFindText) return false; Dispatch.call(Dispatch.get(selection, InLineShapes).toDispatch(), AddPicture, imagePath); return true; /* */* * 全
17、局替换图片 * * param toFindText 查找字符串 * param imagePath 图片路径 */ public void replaceAllImage(String toFindText, String imagePath) while (find(toFindText) Dispatch.call(Dispatch.get(selection, InLineShapes).toDispatch(), AddPicture, imagePath); Dispatch.call(selection, MoveRight); /* */* * 在当前插入点插入图片 * * p
18、aram imagePath 图片路径 */ public void insertImage(String imagePath) Dispatch.call(Dispatch.get(selection, InLineShapes).toDispatch(), AddPicture, imagePath); /* */* * 合并单元格 * * param tableIndex * param fstCellRowIdx * param fstCellColIdx * param secCellRowIdx * param secCellColIdx */ public void mergeC
19、ell(int tableIndex, int fstCellRowIdx, int fstCellColIdx, int secCellRowIdx, int secCellColIdx) / 所有表格 Dispatch tables = Dispatch.get(doc, Tables).toDispatch(); / 要填充的表格 Dispatch table = Dispatch.call(tables, Item, new Variant(tableIndex) .toDispatch(); Dispatch fstCell = Dispatch.call(table, Cell,
20、new Variant(fstCellRowIdx), new Variant(fstCellColIdx) .toDispatch(); Dispatch secCell = Dispatch.call(table, Cell, new Variant(secCellRowIdx), new Variant(secCellColIdx) .toDispatch(); Dispatch.call(fstCell, Merge, secCell); /* */* * 在指定的单元格里填写数据 * * param tableIndex * param cellRowIdx * param cellColIdx * param txt */ public void putTxtToCell(int tableIndex, int cellRowIdx, int cell
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1