`
uu011
  • 浏览: 29259 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jacob解析word

    博客分类:
  • java
 
阅读更多
由于项目需要,取得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; 
}
分享到:
评论
1 楼 guoguo1010 2015-02-05  
楼主,jacob是不能在linux用?

相关推荐

    jacob解析word excel附件

    jacob解析word excel的jar包 dll文件

    java操作word:jacob(方法解析+环境配置)

    jacob jacob配置 java操作word java操作word:jacob(方法解析+环境配置)

    jacob以目录和段落分析读取Word文档(自己写的)

    通过目录找出对应的标题, 通过两个标题的位置得到之间的段落(得到了段落Range,但是我只处理了text,没有处理table和picture,这些都可以从Range中取出)

    jacob将word文档转换为html显示(struts文件上传)

    以jacob将上传的word文件解析成html显示给客户端

    Heritrix lucene开发自己的搜索引擎(源码)1

    使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import-&gt;Existing Project” Eclipse工程/ch9:原书第十二章的工程文件 使用正则表达式解析网页文件 使用HTMLParser解析网页文件 ...

    开发自己的搜索引擎lucene and heritrix

    使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import-&gt;Existing Project” Eclipse工程/ch9:原书第十二章的工程文件 使用正则表达式解析网页文件 使用HTMLParser解析网页文件 ...

    Heritrix lucene开发自己的搜索引擎(源码)3

    使用Jacob解析WORD文件 Google的Search API的使用 安装:直接在Eclipse中选取“import-&gt;Existing Project” Eclipse工程/ch9:原书第十二章的工程文件 使用正则表达式解析网页文件 使用HTMLParser解析网页文件 ...

    jacob按目录拆分文档(含dll和jar),代码说明详细

    基于上次上传的jacob按目录解析word,又开发了按目录拆分文档功能并将拆分后的小文档另存为html文件。 基于上次上传的jacob按目录解析word,又开发了按目录拆分文档功能并将拆分后的小文档另存为html文件。

    jacob1.18源码和jar包

    以前曾经被称为OLE 和OCX activeX web插件可以用于各种非HTML的工作 比如 对MicrosoftExcel 或 MicrosoftWord 文件做操作 解析JS VB脚本 播放FA有一点可以确定的是在JACOB内部 com jacob activeX是建立在com jacob ...

    jacob1.18源码+jar包

    以前曾经被称为OLE 和OCX activeX web插件可以用于各种非HTML的工作 比如 对MicrosoftExcel 或 MicrosoftWord 文件做操作 解析JS VB脚本 播放FA有一点可以确定的是在JACOB内部 com jacob activeX是建立在com jacob ...

    jacob-1.14.3

    java解析word 解压缩后jacob.dll复制到system32下,jacob.jar复制到bin目录下即可

    jacob-1.15-M4.rar

    解析word 封装好了的接口 直接调用就ok了

    freemarker生成复杂word

    Word从2003开始支持XML格式,用XML+Freemarder还做就很简单了,大致的思路是先用office2003或者2007编辑好 word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。...

    JAVA 对word 内容的提取返回String

    JAVA 对word 内容的提取返回String 的代码 两种方式详细的资源描述有机会获得我们的推荐,更有利于他人下载,赚取更多积分

    freemarker+xml动态模板生成doc文件技术

    freemarker+xml动态模板生成doc文件技术,比jacob更加好用,不存在系统兼容性问题,但是依赖于word2003以上的版本才能解析

    java开源包1

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包11

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包2

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

    java开源包3

    parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,...

Global site tag (gtag.js) - Google Analytics