java2word对word替换操作与jacob连接打印机
先看一下java2word.jar与jacob的区别,其实java2word已经包含了jacob了,只不过多了对文档操作的部分

之前做了一个项目要用到操作word文档,然后打印文档,就用到java2word。
只要是用到了java2word的替换操作。其中的书签是在word中设置的,如果没有设置就会报错
import java.io.File;
import com.heavenlake.wordapi.Document;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
/**
* 生成文件类
* @author us
*
*/
public class test {
public test() {
Document doc = null;
try {
doc = new Document();
doc.open("e:/test.doc"); //打开模板
doc.saveAs("e:/test2.doc");//把模板保存为临时文件
doc.open("e:/test2.doc");//然后打开临时文件,操作的是临时文件,不是模板
doc.replaceAll("name", "张三");
doc.replaceAll("sex", "男");
doc.replaceAll("birthday", "2011-01-01");
doc.replaceAll("place", "广东");
doc.replaceAll("people", "汉族");
doc.replaceAll("id", "4xxxxxxxxxxxxxxxxxxx");
doc.replaceAll("address", "广东");
doc.insertAtBookmark("pic",new java.io.File("C:/test.jpg"));
//插入书签之后,把书签给替换了
doc.replaceAll("pic", "");
System.out.println("操作结束!");
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if(doc!=null) doc.close(true);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
/**
* 功能:实现打印工作
* @param path word文件路径
*/
public static void print(String path){
ComThread.InitSTA();
ActiveXComponent word = new ActiveXComponent("Word.Application");
Dispatch doc=null;
try {
//不打开文档
Dispatch.put(word, "Visible", new Variant(true)); //相当于wordObject.Visible = true
Dispatch docs = word.getProperty("Documents").toDispatch();
//打开文档
doc=Dispatch.call(docs,"Open",path).toDispatch();
//开始打印
//Dispatch.get(doc,"PrintOut");
Dispatch.call(doc, "PrintOut"); //打印
} catch (Exception e) {
e.printStackTrace();
System.out.println("打印失败");
} finally {
try {
if(doc!=null)
Dispatch.call(doc,"Close",new Variant(0));
//word.invoke("Quit", new Variant[0]);
}
catch (Exception e) {
e.printStackTrace();
}
//始终释放资源
ComThread.Release();
}
}
public static void main(String[] args) {
test test1 = new test();
print("e:/test2.doc");
}
}
最后提醒一下,这在后台服务器端的打印机打印的,如果你想在b/s中在客户端打印机打印的话,肯定不行。
浙公网安备 33010602011771号