1. 程式人生 > >jacob word 頁首多頁插入

jacob word 頁首多頁插入

  1. 在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();
    	}