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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Jacob 可以通过使用适当的编程工具和库来读取 Word 文档中的图片。一种常见的方法是使用 Python 编程语言中的 python-docx 库。以下是一个简单的示例代码,说明如何使用 python-docx 读取 Word 文档中的图片: 1. 首先,我们需要安装 python-docx 库。可以使用以下命令来安装: pip install python-docx 2. 确保已将要读取的 Word 文档保存在适当的路径下,并将其命名为 "example.docx"。 3. 使用以下代码来读取 Word 文档中的图片: ```python from docx import Document # 打开要读取的文档 doc = Document('example.docx') # 遍历文档中的所有段落 for paragraph in doc.paragraphs: # 遍历段落中的所有run for run in paragraph.runs: # 检查run中是否包含图片 if run._element.tag == '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}r': # 获取图片的二进制数据 image_data = run.inline.graphic.graphicData.pic.blipFill.blip.embed.rels['rEmbed'] # 保存图片数据到磁盘 with open('image.jpg', 'wb') as f: f.write(doc.part.read(image_data).blob) print("成功读取了图片!") ``` 请注意,在代码中,我们假设 Word 文档中仅有一个图片,并将其保存为名为 "image.jpg" 的文件。如果 Word 文档中有多个图片,您可能需要根据自己的需求进行相应的修改。 这就是通过使用 python-docx 库来读取 Word 文档中的图片的基本过程。通过适当的修改和处理,您可以根据自己的需求来读取和处理 Word 文档中的图片。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值