java+根据word模板生成word+文档

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java 根据word模板生成word 文档

先下载jacob_1.10.1.zip。

解压后将jacob.dll放到windows/system32下面或\j2sdk\bin下面。

将jacob.jar加入项目。

/*

* Java2word.java

*

* To change this template, choose Tools | Template Manager

* and open the template in the editor.

*/

/*

* 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段,Value代表用来替换的值。* word模板中所有要替换的字段(即HashMap中的Key)以特殊字符开头和结尾,如:$code$、$date$……,以免执行错误的替换。

* 所有要替换为图片的字段,Key中需包含image或者Value为图片的全路径(目前只判断文件后缀名为:.bmp、

.jpg、.gif)。

* 要替换表格中的数据时,HashMap中的Key格式为“table$R@N”,其中:R代表从表格的第R行开始替换,N代表

word模板中的第N张表格;Value为ArrayList对象,ArrayList中包含的对象统一为String[],一条String[]代

表一行数据,ArrayList中第一条记录为特殊记录,记录的是表格中要替换的列号,如:要替换第一列、第三列、

第五列的数据,则第一条记录为String[3] {“1”,”3”,”5”}。

*/

package com.word.util;

/**

*

* @author kdl

*/

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import com.jacob.activeX.ActiveXComponent;

import .Dispatch;

import .Variant;

public class Java2word {

private boolean saveOnExit;

/**

* word文档

*/

Dispatch doc = null;

/**

* word运行程序对象s

*/

private ActiveXComponent word;

/**

* 所有word文档

*/

private Dispatch documents;

/**

* 构造函数

*/

public Java2word() {

if(word==null){

word = new ActiveXComponent("Word.Application");

word.setProperty("Visible",new Variant(false));

}

if(documents==null)

documents = word.getProperty("Documents").toDispatch();

saveOnExit = false;

}

/**

* 设置参数:退出时是否保存

* @param saveOnExit boolean true-退出时保存文件,false-退出时不保存文件*/

public void setSaveOnExit(boolean saveOnExit) {

this.saveOnExit = saveOnExit;

}

/**

* 得到参数:退出时是否保存

* @return boolean true-退出时保存文件,false-退出时不保存文件

*/

public boolean getSaveOnExit() {

return saveOnExit;

}

/**

* 打开文件

* @param inputDoc String 要打开的文件,全路径

* @return Dispatch 打开的文件

*/

public Dispatch open(String inputDoc) {

return Dispatch.call(documents,"Open",inputDoc).toDispatch();

//return Dispatch.invoke(documents,"Open",Dispatch.Method,new Object[]{inputDoc},new int[1]).toDispatch();

}

/**

* 选定内容

* @return Dispatch 选定的范围或插入点

*/

public Dispatch select() {

return word.getProperty("Selection").toDispatch();

}

/**

* 把选定内容或插入点向上移动

* @param selection Dispatch 要移动的内容

* @param count int 移动的距离

*/

public void moveUp(Dispatch selection,int count) {

for(int i = 0;i < count;i ++)

Dispatch.call(selection,"MoveUp");

}

/**

* 把选定内容或插入点向下移动

* @param selection Dispatch 要移动的内容

* @param count int 移动的距离

*/

public void moveDown(Dispatch selection,int count) {

for(int i = 0;i < count;i ++)

Dispatch.call(selection,"MoveDown");

}

/**

* 把选定内容或插入点向左移动

* @param selection Dispatch 要移动的内容

* @param count int 移动的距离

*/

public void moveLeft(Dispatch selection,int count) {

for(int i = 0;i < count;i ++) {

相关文档
最新文档