1. 程式人生 > >jacob學習一:向word中新增一個字串

jacob學習一:向word中新增一個字串

最近發現許多操作都是需要呼叫windows的COM元件,雖然java有JNI,但是似乎並不好用,後來發現有個jacob,底層雖然也是使用JNI,但是直接使用jacob,好了很多,,下面是一個簡單的demo;

主要實現開啟一個臨時word,填寫一個字串。

/*******************************************************************************
 * @project: jacobTest
 * @package: com.jacob.burns
 * @file: JacobTest2.java
 * @author: Administrator
 * @created: 2017-9-8
 * @purpose:
 * 
 * @version: 1.0
 * 
 * Revision History at the end of file.
 * 
 * Copyright 2017 AcconSys All rights reserved.
 ******************************************************************************/

package com.jacob.burns;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class JacobTest2 {

	public static void main(String[] args) {
		ComThread.InitSTA();// 初始化com的執行緒,非常重要!!使用結束後要呼叫 realease方法
		// 2. 初始化word應用程式,新建一個空白文件,取得文件內容物件//Instantiate objWord //Declare word
		// object
		ActiveXComponent objWord = new ActiveXComponent("Word.Application");
		// Assign a local word object
		Dispatch wordObject = (Dispatch) objWord.getObject();
		// Create a Dispatch Parameter to show the document that is opened
		Dispatch.put((Dispatch) wordObject, "Visible", new Variant(true));// new
																			// Variant(true)表示word應用程式可見
		// Tip:設定一個物件的屬性的時候,利用Dispatch的put方法,給屬性賦值。上面這行語句相當於vb的
		// wordObject.Visible = true 語句
		// Instantiate the Documents Property
		Dispatch documents = objWord.getProperty("Documents").toDispatch(); // documents表示word的所有文件視窗,(word是多文件應用程式)
		// Add a new word document, Current Active Document
		Dispatch document = Dispatch.call(documents, "Add").toDispatch(); // 使用Add命令建立一個新文件,用Open命令可以開啟一個現有文件
		// Tip:呼叫一個物件的方法的時候,利用Dispatch的call方法,上面的語句相當於vb的document =
		// documents.Add() 語句。
		Dispatch wordContent = Dispatch.get(document, "Content").toDispatch(); // 取得word檔案的內容
		// Tip:取得一個物件的成員變數(屬性)時利用Dispatch的get方法,上面的語句相當於vb的wordContent =
		// document.Content語句
		// 3. 取得word文件的內容後,可以對其內容進行操作
		Dispatch.call(wordContent, "InsertAfter", "這裡是一個段落的內容");// 插入一個段落
		// 4. 設定剛插入的段落的文字格式
		Dispatch paragraphs = Dispatch.get(wordContent, "Paragraphs")
				.toDispatch(); // 所有段落
		int paragraphCount = Dispatch.get(paragraphs, "Count").toInt(); // 一共的段落數
		// 找到剛輸入的段落,設定格式
		Dispatch lastParagraph = Dispatch.call(paragraphs, "Item",
				new Variant(paragraphCount)).toDispatch(); // 最後一段
		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)); // 小四
	}
}

/*******************************************************************************
 * <B>Revision History</B><BR>
 * [type 'revision' and press Alt + / to insert revision block]<BR>
 * 
 * 
 * 
 * Copyright 2017 AcconSys All rights reserved.
 ******************************************************************************/