Jacob解析word

由于项目需要,取得word的内容,因研究了下Jacob,尽管POI也能解析word,但我觉得Jacob还是好些(注:Jacob好像不能在Linux下用)昨天下午看了看Jacob的源码,今天上午终于把word的表格给搞定了(速度有点小慢,不过没关系,慢慢来)。下面来和大家分享下我的快乐:

首先需要下载jacob,去官网http://sourceforge.net,下载后,需要把jacob.dll放到windows目录的system32下,把jacob.jar Copy到lib下就OK, 我用的工具是Myeclipse6.

接着我们看下打开word,嘿嘿o('_')o

Java代码
import javax.xml.ws.Dispatch;

public class Test {
private ActiveXComponent app = null;
private Dispatch doc = null;
private Dispatch docs = null;
private Dispatch wcontent = null;
public boolean openWord(String wordPath) {
boolean isOpen = true;
try {
app = new ActiveXComponent("Word.Application"); // 启动word, 生成
// 一个ActiveXComponent
// 对象
app.setProperty("Visible", new Variant(false)); // 设置文档可见性
docs = app.getProperty("Documents").toDispatch(); // 获得document对象
doc = Dispatch.invoke(
docs,
"Open",
Dispatch.Method,
new Object[] { wordPath, new Variant(false),
new Variant(true) }, new int[1]).toDispatch(); // 打开word文件
wcontent = Dispatch.get(doc, "Content").toDispatch(); // 取得word文件的内容
} catch (Exception e) {
isOpen = false;
} finally {

}
return isOpen;
}
}

上面的方法,你只需要传递word文件所在的目录就OK,下面再看看得到表格的内容的一个方法:
Java代码
/**
* 得到第X个表格的第N行第M列的内容
* @param tableNum 第几个表格
* @param row 第N行
* @param col 第M列
* @param tables 表格对象
* @return
*/
public String table(int tableNum,int row,int col,Dispatch tables) {
String tempText = ""; // 获得表格的内容
try {
int tableCount = getTablesCount(tables); // 获取文档中表格总数
if(tableCount > 0) {// 判断文档中是否存在表格
if(tableNum<=tableCount) { // 判断所查表格序号是否超过文档表格总数
// 得到第X个表格的对象
Dispatch table = Dispatch.call(tables, "Item",
new Variant(tableNum)).toDispatch(); // 得到第X个表格对象的行
Dispatch rows = Dispatch.call(table,"Rows").toDispatch(); // 获取当前表格的行数
int rowCount = Dispatch.
get(rows,"Count").getInt();
if(row <=rowCount) {
Dispatch cell = Dispatch.call(table, "Cell", new Variant(row),
new Variant(col)).toDispatch();
Dispatch rangeCell = Dispatch.call(cell,"Range").toDispatch();
tempText = Dispatch.get(rangeCell,"Text").getString(); //得到所查表格内容
tempText="0#"+tempText;
}else {
tempText = "1#行号不存在";
}
}
else {
tempText = "2#表格不存在";
}
}
}
catch(Exception e){
tempText="3#表格列不存在";
}
return tempText;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值