jacob word 頁首多頁插入
阿新 • • 發佈:2019-02-08
- 在jacob 中可以通過以下程式碼想word中插入頁首頁尾,但是在操作過程中使用模板中有多頁的時候,只有第一頁可以插入。是因為word 在開啟頁首檢視的時候只打開當前頁的頁首,這是全域性替換文字資訊的程式碼。但是頁首頁尾那塊如果有分割的情況下,只會替換當頁的頁首頁尾。
/** * 全域性替換文字 * @param findText * @param newText */ public void replaceAllText(String findText, String newText, String fontName, int size){ /****插入頁首頁尾*****/ //取得活動窗體物件 Dispatch activeWindow = word.getProperty( "ActiveWindow").toDispatch(); //取得活動窗格物件 Dispatch activePane = Dispatch.get(activeWindow, "ActivePane").toDispatch(); //取得視窗物件 Dispatch view = Dispatch.get(activePane, "View").toDispatch(); /****設定頁首*****/ Dispatch.put(view, "SeekView", "9"); while (find(findText)){ Dispatch.put(selection, "Text", newText); moveStart(); } /****設定頁尾*****/ Dispatch.put(view, "SeekView", "10"); while (find(findText)){ Dispatch.put(selection, "Text", newText); moveStart(); } Dispatch.put(view, "SeekView", new Variant(0));//恢復檢視 moveStart(); while (find(findText)){ Dispatch.put(selection, "Text", newText); // putFontSize(selection, fontName, size); moveStart(); } }
如果想多頁不同頁首的同時替換的話,需要每個頁首都要執行一遍。可以通過find查詢定位頁首所在頁位置如下程式碼所示:
@RequestMapping("/w") public void wirteWord(HttpServletResponse response){ WordUtil wt = new WordUtil(false); ComThread.InitSTA(); wt.openDocument(capyfilePath+date+".doc"); wt.replaceAllText("要替換的文字","替換後的文字", "", 1); wt.find("第二頁"); wt.replaceAllText("要替換的文字","替換後的文字", "", 1); wt.find("第三頁"); wt.replaceAllText("要替換的文字","替換後的文字", "", 1); wt.moveStart(); }