/**
* 传入数据为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","2","3"}。
*/
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
* 利用word模板生成word文件
* @typename:Java2word
* @author: FishRoad
* @since: 2015年8月24日 下午2:47:41
*
*/
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).