Java調用com組件操作word

一、準備工作

  先了解一下概念,JACOB 就是 JAVA-COM Bridge的縮寫,提供自動化的訪問com的功能,也是通過JNI功能訪問windows平臺下的com組件或者win32系統庫的。這是一個開始於 1999年的開源項目的成果,有很多使用者對該項目進行了修改,做出了自己的貢獻。

 

  Jacob下載地址:http://sourceforge.net/project/showfiles.php?group_id=109543&package_id=118368

 

  另外java操作word方式還有:

  (1)、Apache POI - Java API To Access Microsoft Format Files(http://poi.apache.org/ );對word處理不夠強處理Excel功能可以,但是全是通過java完成的,不需 要com組件支持;

  (2)、java2word 是一個在java程序中調用 MS Office Word 文檔的組件(類庫)。該組件提供了一組簡單的接口,以便java程序調用他的服務操作Word 文檔。(好象也是用的java-com技術);

  (3)、web開發語言操作word的功能最好還是用第三方的控件, 看看這個SOAOFFICE,還可以使用js 寫VBA呢 http://www.kehansoft.com/soaoffice/doclist.asp

 

二、安裝Jacob

  Jacob的安裝非常的簡單,我們解開下載的jacob_1.9.zip,在文件夾中找到jacob.dll和jacob.jar兩個文件,如果是 Jacob1.14.3則是jacob-1.14.3-x86.dll(32位,機和jacob-1.14.3-x64.dll(64位)和 jacob.jar兩個文件。Jacob.dll直接放到系統的system32文件夾下就行了,連註冊都不用的(或者拷貝到jdk或者jre的bin目 錄下也行,當前測試文件所在的目錄也行,就是只要在java.library.path中就可以)。而jacob.jar設置到classpath中去就可以了,或者在IDE開發環境的工程中設置擴展庫也一樣的。

 

  注意使用jacob一寫要安裝word,我裝的word2003,如果是操作word2007就不用jacob了(好像這方面的API)。

 

  對jacob.dll幾種配置方法:

  1、把jacob.dll文件,複製到 windows\system32 目錄下。

  2、把jacob.dll放入Java\jdk1.5.0_06\jre\bin目錄下.把jacob.jar放入 Java\jdk1.5.0_0\jre\lib\ext目錄下,可以正常運行。

  3、把jacob.dll放入\glc\src目錄下.把jacob.jar放入WEB-INF\lib目錄下,也是可以正常運行。

  

三、使用

public class MSWordManager {
	// word文檔
	private Dispatch doc;

	// word運行程序對象
	private ActiveXComponent word;

	// 所有word文檔集合
	private Dispatch documents;

	// 選定的範圍或插入點
	private Dispatch selection;

	private boolean saveOnExit = true;

	public MSWordManager() {
		ComThread.InitSTA();
		if (word == null) {
			word = new ActiveXComponent("Word.Application");
			word.setProperty("Visible", new Variant(false));
		}
		if (documents == null){
			documents = word.getProperty("Documents").toDispatch();
		}
	}

	/** */
	/**
	 * 設置退出時參數
	 * 
	 * @param saveOnExit
	 *            boolean true-退出時保存文件,false-退出時不保存文件
	 */
	public void setSaveOnExit(boolean saveOnExit) {
		this.saveOnExit = saveOnExit;
	}

	/** */
	/**
	 * 創建一個新的word文檔
	 * 
	 */
	public void createNewDocument() {
		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.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
	 *            移動的距離
	 */
	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.get(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.call(selection, "MoveRight");
	}

	/** */
	/**
	 * 把插入點移動到文件首位置
	 * 
	 */
	public void moveStart() {
		if (selection == null)
			selection = Dispatch.get(word, "Selection").toDispatch();
		Dispatch.call(selection, "HomeKey", 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(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").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
	 *            查找字符串
	 * @param 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, "Text", 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;
	}

	/** */
	/**
	 * 全局替換圖片
	 * 
	 * @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");
		}
	}

	/** */
	/**
	 * 在當前插入點插入圖片
	 * 
	 * @param 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 mergeCell(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",
				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 cellColIdx,
			String txt) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx),
				new Variant(cellColIdx)).toDispatch();
		Dispatch.call(cell, "Select");
		Dispatch.put(selection, "Text", txt);
	}

	/** */
	/**
	 * 在指定的單元格里填寫數據
	 * 
	 * @param tableIndex
	 * @param cellRowIdx
	 * @param cellColIdx
	 * @param txt
	 */
	public void putTxtToCellCenter(int tableIndex, int cellRowIdx,
			int cellColIdx, String txt) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		Dispatch cell = Dispatch.call(table, "Cell", new Variant(cellRowIdx),
				new Variant(cellColIdx)).toDispatch();
		Dispatch.call(cell, "Select");
		Dispatch alignment = Dispatch.get(selection, "ParagraphFormat")
				.toDispatch();
		Dispatch.put(alignment, "Alignment", "3");
		Dispatch.put(selection, "Text", txt);
	}

	/** */
	/**
	 * 在當前文檔拷貝剪貼板數據
	 * 
	 * @param pos
	 */
	public void pasteExcelSheet(String pos) {
		moveStart();
		if (this.find(pos)) {
			Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();
			Dispatch.call(textRange, "Paste");
		}
	}

	/** */
	/**
	 * 在當前文檔指定的位置拷貝表格
	 * 
	 * @param pos
	 *            當前文檔指定的位置
	 * @param tableIndex
	 *            被拷貝的表格在word文檔中所處的位置
	 */
	public void copyTable(String pos, int tableIndex) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		Dispatch range = Dispatch.get(table, "Range").toDispatch();
		Dispatch.call(range, "Copy");
		if (this.find(pos)) {
			Dispatch textRange = Dispatch.get(selection, "Range").toDispatch();
			Dispatch.call(textRange, "Paste");
		}
	}

	/** */
	/**
	 * 在當前文檔指定的位置拷貝來自另一個文檔中的表格
	 * 
	 * @param anotherDocPath
	 *            另一個文檔的磁盤路徑
	 * @param tableIndex
	 *            被拷貝的表格在另一格文檔中的位置
	 * @param pos
	 *            當前文檔指定的位置
	 */
	public void copyTableFromAnotherDoc(String anotherDocPath, int tableIndex,
			String pos) {
		Dispatch doc2 = null;
		try {
			doc2 = Dispatch.call(documents, "Open", anotherDocPath)
					.toDispatch();
			// 所有表格
			Dispatch tables = Dispatch.get(doc2, "Tables").toDispatch();
			// 要填充的表格
			Dispatch table = Dispatch.call(tables, "Item",
					new Variant(tableIndex)).toDispatch();
			Dispatch range = Dispatch.get(table, "Range").toDispatch();
			Dispatch.call(range, "Copy");
			if (this.find(pos)) {
				Dispatch textRange = Dispatch.get(selection, "Range")
						.toDispatch();
				Dispatch.call(textRange, "Paste");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (doc2 != null) {
				Dispatch.call(doc2, "Close", new Variant(saveOnExit));
				doc2 = null;
			}
		}
	}

	/** */
	/**
	 * 在當前文檔指定的位置拷貝來自另一個文檔中的圖片
	 * 
	 * @param anotherDocPath
	 *            另一個文檔的磁盤路徑
	 * @param shapeIndex
	 *            被拷貝的圖片在另一格文檔中的位置
	 * @param pos
	 *            當前文檔指定的位置
	 */
	public void copyImageFromAnotherDoc(String anotherDocPath, int shapeIndex,
			String pos) {
		Dispatch doc2 = null;
		try {
			doc2 = Dispatch.call(documents, "Open", anotherDocPath)
					.toDispatch();
			Dispatch shapes = Dispatch.get(doc2, "InLineShapes").toDispatch();
			Dispatch shape = Dispatch.call(shapes, "Item",
					new Variant(shapeIndex)).toDispatch();
			Dispatch imageRange = Dispatch.get(shape, "Range").toDispatch();
			Dispatch.call(imageRange, "Copy");
			if (this.find(pos)) {
				Dispatch textRange = Dispatch.get(selection, "Range")
						.toDispatch();
				Dispatch.call(textRange, "Paste");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (doc2 != null) {
				Dispatch.call(doc2, "Close", new Variant(saveOnExit));
				doc2 = null;
			}
		}
	}

	/** */
	/**
	 * 創建表格
	 * 
	 * @param pos
	 *            位置
	 * @param cols
	 *            列數
	 * @param rows
	 *            行數
	 */
	public void createTable(String pos, int numCols, int numRows) {
		if (find(pos)) {
			Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
			Dispatch range = Dispatch.get(selection, "Range").toDispatch();
			Dispatch newTable = Dispatch.call(tables, "Add", range,
					new Variant(numRows), new Variant(numCols)).toDispatch();
			Dispatch.call(selection, "MoveRight");
		}
	}

	/** */
	/**
	 * 在指定行前面增加行
	 * 
	 * @param tableIndex
	 *            word文件中的第N張表(從1開始)
	 * @param rowIndex
	 *            指定行的序號(從1開始)
	 */
	public void addTableRow(int tableIndex, int rowIndex) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
		Dispatch row = Dispatch.call(rows, "Item", new Variant(rowIndex))
				.toDispatch();
		Dispatch.call(rows, "Add", new Variant(row));
	}

	/** */
	/**
	 * 在第1行前增加一行
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 */
	public void addFirstTableRow(int tableIndex) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
		Dispatch row = Dispatch.get(rows, "First").toDispatch();
		Dispatch.call(rows, "Add", new Variant(row));
	}

	/** */
	/**
	 * 在最後1行前增加一行
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 */
	public void addLastTableRow(int tableIndex) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
		Dispatch row = Dispatch.get(rows, "Last").toDispatch();
		Dispatch.call(rows, "Add", new Variant(row));
	}

	/** */
	/**
	 * 增加一行
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 */
	public void addRow(int tableIndex) {
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
		Dispatch.call(rows, "Add");
	}

	/** */
	/**
	 * 增加一列
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 */
	public void addCol(int tableIndex) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch cols = Dispatch.get(table, "Columns").toDispatch();
		Dispatch.call(cols, "Add").toDispatch();
		Dispatch.call(cols, "AutoFit");
	}

	/** */
	/**
	 * 在指定列前面增加表格的列
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 * @param colIndex
	 *            制定列的序號 (從1開始)
	 */
	public void addTableCol(int tableIndex, int colIndex) {
		// 所有表格
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch cols = Dispatch.get(table, "Columns").toDispatch();
		System.out.println(Dispatch.get(cols, "Count"));
		Dispatch col = Dispatch.call(cols, "Item", new Variant(colIndex))
				.toDispatch();
		// Dispatch col = Dispatch.get(cols, "First").toDispatch();
		Dispatch.call(cols, "Add", col).toDispatch();
		Dispatch.call(cols, "AutoFit");
	}

	/** */
	/**
	 * 在第1列前增加一列
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 */
	public void addFirstTableCol(int tableIndex) {
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch cols = Dispatch.get(table, "Columns").toDispatch();
		Dispatch col = Dispatch.get(cols, "First").toDispatch();
		Dispatch.call(cols, "Add", col).toDispatch();
		Dispatch.call(cols, "AutoFit");
	}

	/** */
	/**
	 * 在最後一列前增加一列
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 */
	public void addLastTableCol(int tableIndex) {
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch cols = Dispatch.get(table, "Columns").toDispatch();
		Dispatch col = Dispatch.get(cols, "Last").toDispatch();
		Dispatch.call(cols, "Add", col).toDispatch();
		Dispatch.call(cols, "AutoFit");
	}

	/** */
	/**
	 * 設置當前選定內容的字體
	 * 
	 * @param boldSize
	 * @param italicSize
	 * @param underLineSize
	 *            下劃線
	 * @param colorSize
	 *            字體顏色
	 * @param size
	 *            字體大小
	 * @param name
	 *            字體名稱
	 */
	public void setFont(boolean bold, boolean italic, boolean underLine,
			String colorSize, String size, String name) {
		Dispatch font = Dispatch.get(selection, "Font").toDispatch();
		Dispatch.put(font, "Name", new Variant(name));
		Dispatch.put(font, "Bold", new Variant(bold));
		Dispatch.put(font, "Italic", new Variant(italic));
		Dispatch.put(font, "Underline", new Variant(underLine));
		Dispatch.put(font, "Color", colorSize);
		Dispatch.put(font, "Size", size);
	}

	public void setFontCenter(String name) {
		Dispatch font = Dispatch.get(selection, "Font").toDispatch();
		Dispatch alignment = Dispatch.get(selection, "ParagraphFormat")
				.toDispatch();
		Dispatch.put(alignment, "Alignment", "3");
		Dispatch.call(selection, "TypeText", name);
	}

	/** */
	/**
	 * 文件保存或另存爲
	 * 
	 * @param savePath
	 *            保存或另存爲路徑
	 */
	public void save(String savePath) {
		Dispatch.call(doc, "SaveAs", savePath); // 保存
		/**//*
			 * Dispatch.call(Dispatch.call(word, "WordBasic").getDispatch(),
			 * "FileSaveAs", savePath);
			 */
	}

	/** */
	/**
	 * 關閉當前word文檔
	 * 
	 */
	public void closeDocument() {
		if (doc != null) {
			Dispatch.call(doc, "Save");
			Dispatch.call(doc, "Close", new Variant(saveOnExit));
			doc = null;
		}
	}

	/** */
	/**
	 * 關閉全部應用
	 * 
	 */
	public void close() {
		closeDocument();
		if (word != null) {
			Dispatch.call(word, "Quit");
			word = null;
		}
		selection = null;
		documents = null;
		ComThread.Release();
	}

	/** */
	/**
	 * 打印當前word文檔
	 * 
	 */
	public void printFile() {
		if (doc != null) {
			Dispatch.call(doc, "PrintOut");
		}
	}

	/** */
	/**
	 * 刪除一行
	 * 
	 * @param tableIndex
	 *            word文檔中的第N張表(從1開始)
	 */
	public void delRow(int tableIndex) {
		Dispatch tables = Dispatch.get(doc, "Tables").toDispatch();
		// 要填充的表格
		Dispatch table = Dispatch.call(tables, "Item", new Variant(tableIndex))
				.toDispatch();
		// 表格的所有行
		Dispatch rows = Dispatch.get(table, "Rows").toDispatch();
		Object temp1 = Dispatch.get(rows, "Count");
		String temp2 = temp1.toString();
		int count = Integer.parseInt(temp2);
		while (count > 1) {
			Dispatch row = Dispatch.get(rows, "Last").toDispatch();
			Dispatch.call(row, "Delete");
			rows = Dispatch.get(table, "Rows").toDispatch();
			temp1 = Dispatch.get(rows, "Count");
			temp2 = temp1.toString();
			count = Integer.parseInt(temp2);
		}
	}

	public void setProp(String sName, String sValue) {
		Dispatch props = Dispatch.get(doc, "CustomDocumentProperties")
				.toDispatch();
		Dispatch prop = Dispatch.call(props, "Item", sName).toDispatch();
		String sOldVal = Dispatch.get(prop, "Value").toString();
		if (!sOldVal.equals(sValue))
			Dispatch.put(prop, "Value", sValue);
	}

	/** */
	/**
	 * @param nType:
	 *            1, number; 2,bool; 3,date; 4,str;
	 */
	public void addProp(String sName, int nType, String sValue) {
		Dispatch props = Dispatch.get(doc, "CustomDocumentProperties")
				.toDispatch();
		Dispatch prop = null;
		try {
			prop = Dispatch.call(props, "Item", sName).toDispatch();
		} catch (Exception e) {
			prop = null;
		}
		if (prop != null)
			return;
		// 1, number; 2,bool; 3,date; 4,str;
		prop = Dispatch.call(props, "Add", sName, false, nType, sValue)
				.toDispatch();
		Dispatch.put(prop, "Value", sValue);
	}

	public String getProp(String sName) {
		String sValue = null;
		Dispatch props = Dispatch.get(doc, "CustomDocumentProperties")
				.toDispatch();
		Dispatch prop = Dispatch.call(props, "Item", sName).toDispatch();

		sValue = Dispatch.get(prop, "Value").toString();
		@SuppressWarnings("unused")
		String sType = Dispatch.get(prop, "Type").toString();

		try {
			Dispatch prop0 = Dispatch.call(doc, "CustomDocumentProperties",
					sName).toDispatch();
			sValue = Dispatch.get(prop0, "Value").toString();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return sValue;
	}

	public void fack_change() {
		Dispatch _sel = Dispatch.call(doc, "Range", 0, 0).toDispatch();
		Dispatch.call(_sel, "InsertBefore", "A");
		Dispatch.call(_sel, "Select");
		Dispatch.call(_sel, "Delete");
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章