由于项目需要,取得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;
}
首先需要下载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;
}
发表评论
-
MyBatis的动态SQL详解
2012-08-19 20:44 746MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我 ... -
spring-动态装配bean
2012-03-19 20:04 974http://uu011.iteye.com/admin/bl ... -
XSocket的学习和总结(一)
2012-03-14 14:20 803http://blog.csdn.net/lizhi20040 ... -
xsocket基础学习一
2012-03-14 09:55 11541、这个开源的框架只需要有一个J2SE5.0就行了不需要其他的 ... -
io与nio的区别
2012-03-14 09:52 901io:提供读写操作 nio提供读写操作,基本单位为byteB ... -
详解FreeMarker生成复杂Word文档
2012-03-03 11:57 1015http://www.java.sh/web/freemark ... -
java生成word,html文件并将内容保存至数据库
2012-03-03 11:32 993在最近的一个项目中需要将一段字符类型的文本存为word,htm ... -
Jacob解决Word文档的读写问题
2012-03-03 11:19 1119转于:北极之光的博客 标签:jacob word com 表格 ... -
Java服务器端List对象转换为JSON对象并返回客户端实例
2011-04-26 01:53 860http://apps.hi.baidu.com/share/ ... -
如何将tomcat启动注册为系统服务
2011-04-06 04:02 933曾经做过J2EE开发的朋友,一定对Tomcat这个东西最熟 ... -
添加tomcat 服务删除
2011-04-06 03:15 1347tomcat服务删除 关键字: tomcat服务删除 命令行 ... -
如何用Java操作Word, Excel, PDF文档
2011-04-05 03:27 815http://java.ccidnet.com/art/353 ... -
javascript 关闭
2011-03-31 10:32 0http://www.abab123.com/bbs/down ... -
定数显示通知
2011-03-30 11:56 0window.setInterval('shows()',10 ... -
两个LIST比对筛选返回LIST比对结果(转)
2011-03-28 11:09 1314两个LIST比对筛选返回LIST比对结果 不知道大家有没有碰到 ... -
map 转换Set遍历
2011-03-28 10:25 981Map map=new HashMap(); map.put( ... -
java实现mysql 数据库备份
2011-03-21 16:55 1150//db数据库 //ip 备份数据库地址 //user用户名 ...
相关推荐
jacob解析word excel的jar包 dll文件
Jacob 操作 Word 文档详解 Jacob 操作 Word 文档概述 Jacob 是一个 Java 库,用于访问和操作 Microsoft Office 应用程序,包括 Word。它提供了一个基于 COM(Component Object Model)的接口,允许 Java 应用...
### Java操作Word:Jacob(方法解析+环境配置) #### Jacob简介 Jacob是一个开源的Java-COM桥接工具,它允许Java程序与Windows平台上的COM组件进行交互。这意味着开发者可以通过Java来控制诸如Microsoft Word、...
读取word文件的内容,并将内容返回为String类型!
在这个场景下,我们将详细探讨如何利用Jacob来分析和处理Word文档,特别是目录、段落以及它们之间的关系。 首先,标题和目录在Word文档中起着组织和导航的作用。Jacob提供了API,可以让我们访问到Word文档的内置...
### jacob给Word文档添加页脚 在日常工作中,Word文档是经常被使用的工具之一,尤其是在需要编写报告、论文或专业文档时。为了使文档更加规范和专业,往往需要添加页眉、页脚等元素。其中,页脚常用于显示页码、...
### Java使用JACOB将Word转为PDF:详解与实践 #### 一、配置环境与原理简介 在Java中利用JACOB库实现Word文档转PDF功能时,首先需要完成必要的环境配置工作。 ##### 1. JACOB库介绍 JACOB(Java COM Bridge)是一...
以下是对利用Jacob实现Word转PDF的详细说明: 1. **Jacob库介绍**: Jacob是一个Java到COM桥接器,它使得Java开发者能够使用COM组件,如Microsoft Office的Word应用,来执行特定的任务。Jacob通过JNI(Java Native...
### 使用Jacob操作Word知识点总结 #### 一、Jacob简介与Word自动化操作背景 Jacob(Java COM Bridge)是一款开源的Java库,它允许Java程序通过COM接口调用Windows平台下的应用程序,如Microsoft Office套件中的...
### jacob调用Word代码详解 #### 一、前言 在进行自动化办公或文档处理时,经常会遇到需要与Microsoft Word交互的需求。JACOB(Java COM Bridge)库提供了一种简便的方式,允许Java程序通过COM接口来操作Office...
基于上次上传的jacob按目录解析word,又开发了按目录拆分文档功能并将拆分后的小文档另存为html文件。 基于上次上传的jacob按目录解析word,又开发了按目录拆分文档功能并将拆分后的小文档另存为html文件。
本文将深入探讨Jacob与Word的交互,解析其基本原理和常见应用场景。 Jacob库的核心在于它提供了一种方法,让Java程序能够调用Windows系统的COM(Component Object Model)接口。COM是微软提出的一种组件对象模型,...
标题中的 "[jacob]---------------->java 实现 word 转换为html jacob" 提示我们,这个压缩包文件包含了一个使用Java编程语言,并利用Jacob库将Microsoft Word文档转换为HTML格式的示例代码。Jacob是Java和COM...
另一种是通过使用支持PDF生成的库,如iText或Apache POI,直接解析Word文档内容并重新构建为PDF格式。在这个项目中,由于提到了Jacob,很可能是采用了前一种方法,通过截图方式将Word内容转换为PDF,这要求开发者对...
以前曾经被称为OLE 和OCX activeX web插件可以用于各种非HTML的工作 比如 对MicrosoftExcel 或 MicrosoftWord 文件做操作 解析JS VB脚本 播放FA有一点可以确定的是在JACOB内部 com jacob activeX是建立在com jacob ...
使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import->Existing Project” Eclipse工程/ch9:原书第十二章的工程文件 使用正则表达式解析网页文件 使用HTMLParser解析网页文件 ...
使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import->Existing Project” Eclipse工程/ch9:原书第十二章的工程文件 使用正则表达式解析网页文件 使用HTMLParser解析网页文件 ...
使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import->Existing Project” Eclipse工程/ch9:原书第十二章的工程文件 使用正则表达式解析网页文件 使用HTMLParser解析网页文件 ...
### Java 使用 JACOB 将 Word 转换为 HTML 的详细解析 #### 一、JACOB 简介 JACOB (Java COM Bridge) 是一个 Java 库,它允许 Java 应用程序调用 COM 组件。通过 JACOB,开发者可以轻松地在 Java 应用程序中集成 ...
转换过程通常包括解析Word文档的样式、图片和布局,并在HTML中重现它们。 5. **转换流程**: - 首先,程序通过JACOB加载Word文档。 - 然后,它遍历文档的各个部分,包括文本、段落、图片等。 - 接着,将Word的...