`
sha1064616837
  • 浏览: 39918 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

Jacob操作文档

阅读更多
6:Jacob:需要借助Office的com组件(jacob.jar)
所以这个只能放在装有office环境的windows环境下。
把jacob-1.16-M2-x86.dll放在C:\WINDOWS\system32目录下
static int WORD_HTML = 8;
static int WORD_TXT = 7;
static int EXCEL_HTML = 44;
/**
*1. 在Word文档插入图片
* @param fileWordPath:word文档绝对路径
* @param fileImagePath:需要插入的图片的绝对路径
* @return 是否插入图片成功
*/
public static boolean insertImage2Word(String fileWordPath,String fileImagePath) {
ActiveXComponent app = new ActiveXComponent("Word.Application");// 启动word
    try {
        app.setProperty("Visible", new Variant(false)); // 是否前台打开word程序,或者后台运行
        Dispatch documents = Dispatch.get(app, "Documents") .toDispatch();
        Dispatch document = Dispatch.call(documents, "Open", fileWordPath,
                    new Variant(true)/* 是否进行转换ConfirmConversions */,
                    new Variant(false)/* 是否只读 */).toDispatch();
        // 插入图片(注意刚打开的word ,光标处于开头,故图片在最前方插入)
        Dispatch selection = Dispatch.get(app, "Selection").toDispatch();
        Dispatch image = Dispatch.get(selection, "InLineShapes").toDispatch();
        Dispatch.call(image, "AddPicture", fileImagePath);
        Dispatch.call(document, "Save");// 保存
        Dispatch.call(document, "Close", new Variant(0)); // 关闭
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    } finally {
        app.invoke("Quit", new Variant[] {});
         ComThread.Release();//释放进程
      }
    return true;
}
/**
* 2. WORD转HTML
* @param docfile:WORD文件绝对路径
* @param htmlfile:转换后HTML存放的绝对路径
* @return 是否转换成功
*/
public static boolean wordToHtml(String docfile, String htmlfile) {
ActiveXComponent app = new ActiveXComponent("Word.Application");
    try {
    app.setProperty("Visible", new Variant(false));//设置打开方式为后台打开
    Dispatch docs = app.getProperty("Documents").toDispatch();
    Dispatch doc = Dispatch.invoke(docs, "Open",Dispatch.Method,
                    new Object[] { docfile, new Variant(false),
                    new Variant(true) }, new int[1]).toDispatch();
    Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
                    htmlfile, new Variant(WORD_HTML) }, new int[1]);
   Variant f = new Variant(false);
    Dispatch.call(doc, "Close", f);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    } finally {
        app.invoke("Quit", new Variant[] {});
        ComThread.Release();
    }
    return true;
}
/**
* 3. HTML转WORD
* @param html:HTML文件绝对路径
* @param docFile:生成的WORD文件存放的绝对路径
* @return 是否转换成功
*/
public static boolean htmlToWord(String html, String docFile) {
ActiveXComponent app = null;
    try {
    app = new ActiveXComponent("Word.Application"); // 启动word
        app.setProperty("Visible", new Variant(false));
        Dispatch docs = app.getProperty("Documents").toDispatch();
        Dispatch doc = Dispatch.invoke(docs, "Open",Dispatch.Method,
                            new Object[] { html, new Variant(false),
                            new Variant(true) }, new int[1]) toDispatch();
            Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
                    docFile, new Variant(true) }, new int[1]);
            Variant f = new Variant(false);
            Dispatch.call(doc, "Close", f);
        } catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            return false;
        } finally {
            app.invoke("Quit", new Variant[] {});
            ComThread.Release();
        }
        return true;
    }

/**
*4. excel07转excel03
* @param excel07File:excel07文件的绝对路径
* @param excel03File:转换后生成excel03文件存放的绝对路径
* @return 是否转换成功
*/
    public static boolean excel07ToExcel03(String excel07File, String excel03File) {
        ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel
        try {
            app.setProperty("DisplayAlerts", new Variant(false));
            app.setProperty("Visible", new Variant(false));
            Dispatch excels = app.getProperty("Workbooks").toDispatch();
            Dispatch excel = Dispatch.invoke(excels, "Open",Dispatch.Method,
                    new Object[] { excel07File, new Variant(false),
                    new Variant(true) }, new int[1]).toDispatch();
            Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
                    excel03File, new Variant(true) }, new int[1]);
            Dispatch.call(excel, "Close", new Variant(false));
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            app.invoke("Quit", new Variant[] {});
            ComThread.Release();
        }
        return true;
    }
/**
*5. EXCEL转HTML
* @param xlsfile :Excel文件绝对路径
* @param htmlfile:生成的HTML文件存放的绝对路径
* @return 是否转换成功
*/
    public static boolean excelToHtml(String xlsfile, String htmlfile)
    {
         ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动excel
        try {
            app.setProperty("Visible", new Variant(false));
            Dispatch excels = app.getProperty("Workbooks").toDispatch();
            Dispatch excel = Dispatch.invoke(excels, "Open",Dispatch.Method,
                    new Object[] { xlsfile, new Variant(false),
                    new Variant(true) }, new int[1]).toDispatch();
            Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {
                    htmlfile, new Variant(EXCEL_HTML) }, new int[1]);
            Variant f = new Variant(false);
            Dispatch.call(excel, "Close", f);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally{
            app.invoke("Quit", new Variant[] {});
            ComThread.Release();
        }
        return true;
    }
   
/**
* 6. word文档中插入表格
* @param filePath --word文件绝对路径
* @param rowsNum  --插入位置在第几行
* @param colsNum  --插入位置在第几列
* @param vals     --表格中填充的数据
* @return 是否转换成功
*/
    public static boolean wordAddTable(String filePath, int rowsNum,int colsNum,String[][] vals){
        ActiveXComponent msWordApp = null;
        int rowNum = vals.length; //表格行数
        int colNum = vals[0].length; //表格列数
        try {
            msWordApp = new ActiveXComponent("Word.Application");//启动word程序
            msWordApp.setProperty("Visible", new Variant(false));// 是否前台打开word程序,或者后台运行
            Dispatch documents = Dispatch.get(msWordApp, "Documents").toDispatch();
            Dispatch document = Dispatch.call(documents, "Open", filePath,
                    new Variant(true),
                    new Variant(false)).toDispatch();
            // 插入表格(注意刚打开的word ,光标处于开头)
            Dispatch selection = Dispatch.get(msWordApp, "Selection").toDispatch();
//          Dispatch.call(selection, "TypeParagraph"); // 空一行段落
            for(int r= 0;r<rowsNum;r++) {
                Dispatch.call(selection, "MoveDown"); // 游标往下一行 
            }
            for(int c=0;c<colsNum;c++) {
//              Dispatch.call(selection, "MoveRight"); // 游标往右一格
            }          
            Dispatch range = Dispatch.get(selection, "Range").toDispatch();  //当前光标位置或者选中的区域
            Dispatch tables = Dispatch.get(document, "Tables").toDispatch(); // 建立表格  
            //设置表格行数,列数,外格宽度
            Dispatch newTable = Dispatch.call(tables, "Add", range,new Variant(rowNum), new Variant(colNum), new Variant(1)).toDispatch();
            Dispatch cols = Dispatch.get(newTable, "Columns").toDispatch(); // 此表的所有列
            int colCount = Dispatch.get(cols, "Count").changeType(Variant.VariantInt).getInt();//获取表格列数
            //填充表格
             for (int i = 0; i < colCount; i++) { // 循环取出每一列  
                 Dispatch col = Dispatch.call(cols, "Item", new Variant(i+1)).toDispatch();
                // 当前列中单元格
                 Dispatch cells = Dispatch.get(col, "Cells").toDispatch();
                // 当前列中单元格数
                Int cellCount = Dispatch.get(cells, "Count").changeType(Variant.VariantInt).getInt();
                 for (int j = 0; j < cellCount; j++) { 
                    //当前单元格
                     Dispatch cell = Dispatch.call(cells, "Item", new Variant(j+1)). toDispatch();
                    //选中当前单元格
                     Dispatch.call(cell, "Select"); 
                    //往选中的区域中填值,也就是往当前单元格填值
                     Dispatch.put(selection, "Text",vals[j][i]); 
                 } 
                }
            Dispatch.call(document, "Save");// 保存
            // 关闭
            Dispatch.call(document, "Close", new Variant(0));
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            msWordApp.invoke("Quit", new Variant[] {});
            ComThread.Release();
        }
        return true;
    }
分享到:
评论

相关推荐

    jacob操作word文档

    下面将详细阐述Jacob操作Word文档的核心知识点。 1. **Jacob简介** Jacob全称为Java-COM Bridge,是一个开源项目,它的主要作用是提供了一个桥梁,使得Java应用程序能够调用COM组件,进而与Windows系统上的Office...

    jacob api文档及使用方法

    提供的三份文档《jacob操作文档.docx》、《jacob使用.docx》和《jacob介绍.docx》应该分别包含了Jacob的详细操作步骤、常见用法以及基础介绍。这些文档可以帮助开发者更好地理解和使用Jacob,例如,可能包含如何创建...

    jacob操作word文件

    在给定的代码片段中,`GetWord` 类提供了使用Jacob操作Word文档的一些基本功能。 首先,`GetWord` 类初始化了一个`ActiveXComponent` 对象 `word`,这是Jacob库中的一个关键类,用于实例化COM对象,这里是Microsoft...

    jacob 操作word 文档详解

    Jacob 操作 Word 文档详解 Jacob 操作 Word 文档概述 Jacob 是一个 Java 库,用于访问和操作 Microsoft Office 应用程序,包括 Word。它提供了一个基于 COM(Component Object Model)的接口,允许 Java 应用...

    jacob开发文档jacob

    在`samples`目录中,通常会包含各种使用Jacob操作Word和Excel的示例代码。这些示例展示了如何: - 创建新文档、打开已有文档。 - 插入文本、图片、表格。 - 读取和修改单元格数据。 - 应用样式和格式。 - 保存和...

    jacob操作office文档大全

    【Jacob 操作 Office 文档详解】 Jacob 是一个 Java 到微软 COM 接口的桥梁,它使得 Java 应用程序可以调用 COM 对象,从而处理 Microsoft Office 中的文档,如 Word 和 Excel。Jacob 已经成为一个开源项目,可以在...

    jacob操作实例+lib

    标题中的“jacob操作实例+lib”指的是使用Jacob库在Java中进行Microsoft Office文档操作的实践案例和相关库文件。Jacob(Java and .NET Bridge)是一个开源Java库,它允许Java应用程序调用.NET组件,包括对Microsoft...

    jacob操作word(超详细)

    1、把jacob.dll文件,复制到 windows\system32 目录下。(注:我用的时候这个方法不能运行) 2、 把jacob.dll放入 Java\jdk1.5.0_06\jre\bin目录下.把jacob.jar放入 Java\jdk1.5.0_0\jre\lib\ext 目录下.可以正常...

    jacob实现文档插入到word中

    总结来说,Java Jacob提供了一个有效的方式,让开发者能够使用Java语言直接操作Word,实现诸如插入文档等功能。通过理解COM交互机制和Jacob的API,你可以构建出强大的文档处理应用。不过,由于Jacob依赖于Windows和...

    Jacob操作word 文档的方法集!(含创建目录),使用的Jacob版本是1.5

    在这个“Jacob操作word文档的方法集”中,我们将探讨如何使用Jacob 1.5版本来创建和操作Word文档,特别是创建目录。 首先,为了使用Jacob,你需要在你的项目中添加Jacob的jar文件。这通常涉及到将库添加到项目的类...

    jacob的API,很详细

    Jacob API 的详细文档通常以网页格式呈现,提供了丰富的函数和方法供开发者参考。这些函数和方法是Java程序员访问和控制COM对象的关键。以下是对Jacob API的一些核心概念和技术的深入解析: 1. **Jacob初始化**: ...

    JACOB操作word和excel示例

    **关于Jacob操作Excel** 虽然题目中没有明确的Excel示例,但原理是类似的。例如,你可以使用Jacob来读取、写入或修改Excel工作簿。以下是一些基本操作: 1. **创建Excel对象**:与Word一样,你需要先创建Excel应用...

    jacob操作office分享

    4. **自动化Office任务**:对于需要批量处理的Office文档,例如批量转换文件格式、合并多个文档,Jacob都能提供高效的解决方案。 5. **与其他COM组件交互**:Jacob不仅仅局限于Office,它还可以用于与任何支持COM...

    jacob操作WORD详细 教程和JAR包文件

    在Java中使用Jacob操作Word,你需要完成以下步骤: 1. **引入Jacob库**:将下载的jacob-1.18-M2.zip解压,获取到Jacob的jar文件,将其添加到Java项目的类路径中。 2. **注册Jacob库**:由于Jacob是通过JNI调用COM...

    jacob安装包操作office的jacob安装包

    在这个例子中,我们首先创建了一个`ActiveXComponent`实例,代表Word应用程序,然后通过`Dispatch`对象访问并操作文档。需要注意的是,使用JACOB操作Office可能会产生一些性能开销,因为它涉及到进程间通信(IPC),...

    jacob操作语音处理的dll文件

    标题中的“jacob操作语音处理的dll文件”指的是使用Jacob库来处理与语音相关的功能,而Jacob是一个Java和COM(组件对象模型)之间桥梁的开源Java库。它允许Java程序调用COM组件,如那些涉及语音处理的DLL(动态链接...

    jacob操作word资料

    由于Jacob操作涉及到与COM接口的交互,因此应处理可能出现的异常,如`com.jacob.com.ComFailException`。在可能出现错误的地方使用try-catch语句,确保程序的健壮性。 七、高级功能 Jacob还支持更复杂的操作,如...

Global site tag (gtag.js) - Google Analytics