一
先了解一下概念
Jacob下載地址
我在這裡下載了Jacob
這裡下載的是目前最新的Jacob
另外java操作word方式還有(個人認為通過jacob最好
(
(
(
二
Jacob的安裝非常的簡單
注意使用jacob一寫要安裝word
對jacob
三
//注意java操作word關鍵是定位操作對象;
import com
import
import
/**
* jacob操作MSword類
* @author
*/
public class WordBean {
// word文檔
private Dispatch doc;
// word運行程序對象
private ActiveXComponent word;
// 所有word文檔集合
private Dispatch documents;
// 選定的范圍或插入點
private Dispatch selection;
private boolean saveOnExit = true;
public WordBean()throws Exception{
if (word == null) {
word = new ActiveXComponent(
word
word
}
if (documents == null)
documents = word
}
/**
* 設置退出時參數
*
* @param saveOnExit
* boolean true
*/
public void setSaveOnExit(boolean saveOnExit) {
this
}
/**
* 創建一個新的word文檔
*
*/
public void createNewDocument() {
doc = Dispatch
selection = Dispatch
}
/**
* 打開一個已存在的文檔
*
* @param docPath
*/
public void openDocument(String docPath) {
closeDocument();
doc = Dispatch
selection = Dispatch
}
/**
*只讀 打開一個保護文檔
* @param docPath
* @param pwd
*/
public void openDocumentOnlyRead(String docPath
closeDocument();
// doc = Dispatch
// new Object[]{docPath
// new int[
doc = Dispatch
new Variant(true)
selection = Dispatch
}
public void openDocument(String docPath
closeDocument();
doc = Dispatch
new Variant(false)
selection = Dispatch
}
/**
* 把選定的內容或插入點向上移動
*
* @param pos
* 移動的距離
*/
public void moveUp(int pos) {
if (selection == null)
selection = Dispatch
for (int i =
Dispatch
}
/**
* 把選定的內容或者插入點向下移動
*
* @param pos
* 移動的距離
*/
public void moveDown(int pos) {
if (selection == null)
selection = Dispatch
for (int i =
Dispatch
}
/**
* 把選定的內容或者插入點向左移動
*
* @param pos
* 移動的距離
*/
public void moveLeft(int pos) {
if (selection == null)
selection = Dispatch
for (int i =
Dispatch
}
}
/**
* 把選定的內容或者插入點向右移動
*
* @param pos
* 移動的距離
*/
public void moveRight(int pos) {
if (selection == null)
selection = Dispatch
for (int i =
Dispatch
}
/**
* 把插入點移動到文件首位置
*
*/
public void moveStart() {
if (selection == null)
selection = Dispatch
Dispatch
}
/**
* 從選定內容或插入點開始查找文本
*
* @param toFindText
* 要查找的文本
* @return boolean true
*/
@SuppressWarnings(
public boolean find(String toFindText) {
if (toFindText == null || toFindText
return false;
// 從selection所在位置開始查詢
Dispatch find = word
// 設置要查找的內容
Dispatch
// 向前查找
Dispatch
// 設置格式
Dispatch
// 大小寫匹配
Dispatch
// 全字匹配
Dispatch
// 查找並選中
return Dispatch
}
/**
* 把選定選定內容設定為替換文本
*
* @param toFindText
* 查找字符串
* @param newText
* 要替換的內容
* @return
*/
public boolean replaceText(String toFindText
if (!find(toFindText))
return false;
Dispatch
return true;
}
/**
* 全局替換文本
*
* @param toFindText
* 查找字符串
* @param newText
* 要替換的內容
*/
public void replaceAllText(String toFindText
while (find(toFindText)) {
Dispatch
Dispatch
}
}
/**
* 在當前插入點插入字符串
*
* @param newText
* 要插入的新字符串
*/
public void insertText(String newText) {
Dispatch
}
/**
*
* @param toFindText
* 要查找的字符串
* @param imagePath
* 圖片路徑
* @return
*/
public boolean replaceImage(String toFindText
if (!find(toFindText))
return false;
Dispatch
return true;
}
/**
* 全局替換圖片
*
* @param toFindText
* 查找字符串
* @param imagePath
* 圖片路徑
*/
public void replaceAllImage(String toFindText
while (find(toFindText)) {
Dispatch
Dispatch
}
}
/**
* 在當前插入點插入圖片
*
* @param imagePath
* 圖片路徑
*/
public void insertImage(String imagePath) {
Dispatch
}
/**
* 合並單元格
*
* @param tableIndex
* @param fstCellRowIdx
* @param fstCellColIdx
* @param secCellRowIdx
* @param secCellColIdx
*/
public void mergeCell(int tableIndex
int secCellRowIdx
// 所有表格
Dispatch tables = Dispatch
// 要填充的表格
Dispatch table = Dispatch
Dispatch fstCell = Dispatch
new Variant(fstCellRowIdx)
Dispatch secCell = Dispatch
new Variant(secCellRowIdx)
Dispatch
}
/**
* 在指定的單元格裡填寫數據
*
* @param tableIndex
* @param cellRowIdx
* @param cellColIdx
* @param txt
*/
public void putTxtToCell(int tableIndex
String txt) {
// 所有表格
Dispatch tables = Dispatch
// 要填充的表格
Dispatch table = Dispatch
Dispatch cell = Dispatch
new Variant(cellColIdx))
Dispatch
Dispatch
}
/**
* 獲得指定的單元格裡數據
*
* @param tableIndex
* @param cellRowIdx
* @param cellColIdx
* @return
*/
public String getTxtFromCell(int tableIndex
// 所有表格
Dispatch tables = Dispatch
// 要填充的表格
Dispatch table = Dispatch
Dispatch cell = Dispatch
new Variant(cellColIdx))
Dispatch
String ret =
ret = Dispatch
ret = ret
return ret;
}
/**
* 在當前文檔拷貝剪貼板數據
* @param pos
*/
public void pasteExcelSheet(String pos) {
moveStart();
if (this
Dispatch textRange = Dispatch
Dispatch
}
}
/**
* 在當前文檔指定的位置拷貝表格
*
* @param pos
* 當前文檔指定的位置
* @param tableIndex
* 被拷貝的表格在word文檔中所處的位置
*/
public void copyTable(String pos
// 所有表格
Dispatch tables = Dispatch
// 要填充的表格
Dispatch table = Dispatch
Dispatch range = Dispatch
Dispatch
if (this
Dispatch textRange = Dispatch
Dispatch
}
}
/**
* 在當前文檔指定的位置拷貝來自另一個文檔中的表格
*
* @param anotherDocPath
* 另一個文檔的磁盤路徑
* @param tableIndex
* 被拷貝的表格在另一格文檔中的位置
* @param pos
* 當前文檔指定的位置
*/
public void copyTableFromAnotherDoc(String anotherDocPath
String pos) {
Dispatch doc
try {
doc
// 所有表格
Dispatch tables = Dispatch
// 要填充的表格
Dispatch table = Dispatch
new Variant(tableIndex))
Dispatch range = Dispatch
Dispatch
if (this
Dispatch textRange = Dispatch
Dispatch
}
} catch (Exception e) {
e
} finally {
if (doc
Dispatch
doc
}
}
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26342.html