日期:2014-05-17 浏览次数:20702 次
此内容仅支持Window系统?jacob-1.15-M4-x86.dll
?
一、一般应用于使用Word模版中的标签进行内容替换
?
?
String templetPath = ""; //模版文件 String otPath = ""; //保存文件 GF_JacobUtil word = new GF_JacobUtil(); try { //是否显示打开word word.openWord(false); //打开模版文件 word.openDocument(templetPath); //替换书签内容 word.replaceBookMark("Prj_Name", "项目"); //保存到path word.saveFileAs(otPath ); } catch (Exception ex) { ex.printStackTrace(); } finally { //关闭Word word.closeDocument(); word.closeWord(); }
? ? 这个是网上前人总结的一个工具类,稍微修改
?
import java.util.ArrayList; import java.util.List; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.ComThread; import com.jacob.com.Dispatch; import com.jacob.com.Variant; public class GF_JacobUtil { // 建立一個word物件 private ActiveXComponent MsWordApp = null; // 建立兩個word組件 private Dispatch document = null; // selection插入点 private Dispatch selection = null; // content是word的文档内容 private Dispatch content; // repalceStr是word的替换对象 private Dispatch repalceStr; // 建構子 public GF_JacobUtil() { super(); } /** * 開啟word檔案 * * @param makeVisible * 顯示不顯示(true:顯示;false:不顯示) * */ public void openWord(boolean makeVisible) { // 启动com的线程 ComThread.InitSTA(); // 打開word(如果word未開啟時) if (MsWordApp == null) { MsWordApp = new ActiveXComponent("Word.Application"); } // 設置word是可見或不可見(true:顯示;false:不顯示) Dispatch.put(MsWordApp, "Visible", new Variant(makeVisible)); } /** * 建立word的文本內容 * */ public void createNewDocument() { // 建立一個Dispatch物件 Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); document = Dispatch.call(documents, "Add").toDispatch(); selection = MsWordApp.getProperty("Selection").toDispatch(); } /** * 打开文件 * * @param inputDoc * 要打开的文件,全路径 * @return Dispatch 打开的文件 */ public void openDocument(String inputDoc) { // 建立一個Dispatch物件 Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); document = Dispatch.call(documents, "Open", inputDoc).toDispatch(); selection = MsWordApp.getProperty("Selection").toDispatch(); } /** * 选定内容 * * @return Dispatch 选定的范围或插入点 */ public Dispatch select() { return MsWordApp.getProperty("Selection").toDispatch(); } /** * 把选定内容或插入点向上移动 * * @param selection * 要移动的内容 * @param count * 移动的距离 */ public void moveUp(Dispatch selection, int count) { for (int i = 0; i < count; i++) Dispatch.call(selection, "MoveUp"); } /** * 把选定内容或插入点向下移动 * * @param selection * 要移动的内容 * @param count * 移动的距离 */ public void moveDown(Dispatch selection, int count) { for (int i = 0; i < count; i++) Dispatch.call(selection, "MoveDown"); } /** * 把选定内容或插入点向左移动 * * @param selection * 要移动的内容 * @param count * 移动的距离 */ public void moveLeft(Dispatch selection, int count) { for (int i = 0; i < count; i++) Dispatch.call(selection, "MoveLeft"); } /** * 把选定内容或插入点向右移动 * * @param selection * 要移动的内容 * @param count * 移动的距离 */ public void moveRight(Dispatch selection, int count) { for (int i = 0; i < count; i++) Dispatch.call(selection, "MoveRight"); } /** * 把插入点移动到文件首位置 * * @param selection * 插入点 */ public void moveStart(Dispatch selection) { Dispatch.call(selection, "HomeKey", new Variant(6)); } /** * 从选定内容或插入点开始查找文本 * * @param selection * 选定内容 * @param toFindText * 要查找的文本 * @return boolean true-查找到并选中该文本,false-未查找到文本 */ public boolean find(Dispatch selection, String toFindText) { // 从selection所在位置开始查询 Dispatch find = Dispatch.call(selection, "Find").toDispatch(); // 设置要查找的内容 Dispatch.put(find, "Text", toFindText); // 向前查找 Dispatch.put(find, "Forward", "True"); // 设置