• 【jacob word】使用jacob,合并多个word为一个word文件


    将几个word文件合并到一个word文件,使用注意点:

    1.后面附项目运用的jar包jacob-1.9,

    2.并且jacob运用中,需要将附件内的jacob.dll放到windows/system32下

    语法介绍:

    将一个关于JACOB的代码分成下面几个步骤:

        1) ActiveXComponent ax = new ActiveXComponent("a1");//构建ActiveX组件实例

        其中的a1的值和你需要调用的ActiveX控件有关

    MS控件名

    a1的值

    InternetExplorer

    InternetExplorer.Application

    Excel

    Excel.Application

    Word

    Word.Application

    Powerpoint

    Powerpoint.Application

    vb/java Script

    ScriptControl

    windows media Player

    WMPlayer.OCX

    Outlook

    Outlook.Application

    Visio

    Visio.Application

    DAO

    DAO.PrivateDBEngine.35

    MultiFace

    MultiFace.Face

        2) Dispatch ds = ax.getObject(). toDispatch();//获取Dispatch对象,我们可以把每个Dispatch对象看成是对Activex控件的一个操作,这一步是获得该ActiveX控件的控制权。

        (注:浅析JACOB 中提到过Variant类,这里的ax.getObject()便是获得该对象,我们将其转化为任何对象(类型))

        3) Dispatch ds1 = Dispatch.get(ds, "a2").toDispatch(); //获取该ActiveX对象数据结构中的a2属性

        4) Dispatch d2 = Dispatch.invoke(ds1, "a3", a4, a5, a6).toDispatch(); //功能调用,对ActiveX对象ds1的a3属性执行a4(Dispatch.PutDispatch.Get等)操作,执行后a3的值为a5,a6为错误参数码常定义为new int[1],(注:call、get和put方法都是通过该方法实现的)

        5) Dispatch ds2 = Dispatch.put(ds, "a7","a8").toDispatch();//将ActiveX对象ds的属性a7的值设置为a8,该方法返回类型同get一样

        6) Dispatch ds3 = Dispatch.call(ds1, "a9", a10);//该方法和get方法非常类似,他是把a9属性赋值给a10

    具体的使用例子【将多个word合并成一个word文档】:

    1》首先将架包jacob-1.9放在lib,build path进项目

    2》将jacob.dll放在C:WindowsSystem32下

     1 package aaatest;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 import com.jacob.activeX.ActiveXComponent;
     7 import com.jacob.com.Dispatch;
     8 import com.jacob.com.Variant;
     9 
    10 public class WordTest {
    11     
    12     public static void main(String[] args) {
    13             List list  = new ArrayList();
    14             String file1= "D:\2.doc";
    15             String file2= "D:\1.doc";
    16             //String file3= "D:\2.docx";
    17             list.add(file1);
    18             list.add(file2);
    19             //list.add(file3);
    20             uniteDoc(list,"d:\file.doc");
    21     }
    22     public static void uniteDoc(List fileList, String savepaths) {
    23         if (fileList.size() == 0 || fileList == null) {
    24             return;
    25         }
    26         //打开word
    27         ActiveXComponent app = new ActiveXComponent("Word.Application");//启动word
    28         try {
    29             
    30             // 设置word不可见 ---也就是设置ActiveXComponent对象的一个属性
    31             app.setProperty("Visible", new Variant(false));
    32             //获得documents对象----Variant。toDispatch()
    33             Object docs = app.getProperty("Documents").toDispatch();
    34             //打开第一个文件 
    35             //功能调用,对ActiveX对象docs的"Open"属性执行Dispatch.Method(Dispatch.PutDispatch.Get等)操作,执行后"Open"的值为参数4,参数5为错误参数码常定义为new int[1],(注:call、get和put方法都是通过该方法实现的)
    36             Object doc = Dispatch
    37                 .invoke(
    38                         (Dispatch) docs, //调用目标
    39                         "Open",
    40                         Dispatch.Method,
    41                         new Object[] { (String) fileList.get(0),new Variant(false), new Variant(true) }, //参数4
    42                         new int[3]).toDispatch();//参数5
    43             //追加文件
    44             //和上面一样,不过换种通俗的解释:参数1就是这个invoke方法的主题操作对象,参数2就是要对参数1执行的方法的名字,参数3就是参数2这个方法的具体操作;参数4就是一系列的参数;参数5为错误参数码常定义为new int[1]
    45             for (int i = 1; i < fileList.size(); i++) {
    46                 Dispatch.invoke(
    47                         app.getProperty("Selection").toDispatch(),//参数1
    48                         "insertFile", //参数2
    49                         Dispatch.Method, //参数3
    50                         new Object[] {(String) fileList.get(i), "",new Variant(false), new Variant(false),new Variant(false) },//参数4
    51                         new int[3]);//参数5
    52             }
    53             //保存新的word文件
    54             Dispatch.invoke(
    55                     (Dispatch) doc, 
    56                     "SaveAs", 
    57                     Dispatch.Method,
    58                     new Object[] { savepaths, new Variant(1) }, 
    59                     new int[3]);
    60             Variant f = new Variant(false);
    61             Dispatch.call((Dispatch) doc, "Close", f);//该方法和get方法非常类似,他是把"Close"属性赋值给f
    62         } catch (Exception e) {
    63             throw new RuntimeException("合并word文件出错.原因:" + e);
    64         } finally {
    65             app.invoke("Quit", new Variant[] {});
    66         }
    67     }
    68 }
    View Code
  • 相关阅读:
    hadoop cdh5的pig隐式转化(int到betyarray)不行了
    贝叶斯定理与朴素贝叶斯分类器
    我所见过最全的互联网广告相关介绍
    使用Python做简单的字符串匹配
    awk:快速入门(简单实用19例+鸟哥书内容)
    聚类算法小结
    dubbo 实战
    Mysql查询场景
    深入学习树---二叉树基础
    mysql 索引
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/5659680.html
Copyright © 2020-2023  润新知