请教高手,关于jacob操作word文档的问题,怎么把二份word合并成一个。 本帖最后由 liuzhengkang 于 2010-07-23 18:28:14 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用POI,直接取出内容,再合并 package com.sinosoft.dao;import java.io.File;import java.util.ArrayList;import java.util.List;import com.jacob.activeX.ActiveXComponent;import com.jacob.com.Dispatch;import com.jacob.com.Variant;public class Word2Pdf {static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。static final int wdFormatPDF = 17;// PDF 格式public static void main(String[] args) { List list = new ArrayList(); File file1= new File("D:\\file1.doc"); File file2= new File("D:\\file2.doc"); File file3= new File("D:\\file3.doc"); list.add(file1); list.add(file2); list.add(file3); uniteDoc(list,"d:\\file.doc"); }public static void uniteDoc(List fileList, String savepaths) { if (fileList.size() == 0 || fileList == null) { return; } //打开word ActiveXComponent app = new ActiveXComponent("Word.Application");//启动word try { // 设置word不可见 app.setProperty("Visible", new Variant(false)); //获得documents对象 Object docs = app.getProperty("Documents").toDispatch(); //打开第一个文件 Object doc = Dispatch .invoke( (Dispatch) docs, "Open", Dispatch.Method, new Object[] { (String) fileList.get(0), new Variant(false), new Variant(true) }, new int[3]).toDispatch(); //追加文件 for (int i = 1; i < fileList.size(); i++) { Dispatch.invoke(app.getProperty("Selection").toDispatch(), "insertFile", Dispatch.Method, new Object[] { (String) fileList.get(i), "", new Variant(false), new Variant(false), new Variant(false) }, new int[3]); } //保存新的word文件 Dispatch.invoke((Dispatch) doc, "SaveAs", Dispatch.Method, new Object[] { savepaths, new Variant(1) }, new int[3]); Variant f = new Variant(false); Dispatch.call((Dispatch) doc, "Close", f); } catch (Exception e) { throw new RuntimeException("合并word文件出错.原因:" + e); } finally { app.invoke("Quit", new Variant[] {}); } }} 一个关于线程的问题:线程停止以后,就会被回收吗? 我生成的jar包点击运行报错! Swing 用到 JFileChooser 问题 三元运算符 判断性别? 关于垃圾回收? 字符串的问题哈,应该很简单,哪位给解释一下 求助:SQL server中不支持ResultSet.last()怎么办啊? 求救,怎样配置tomcat呀,主要是我自己编写的程序咋不能显示出来呢,是不是浏览器中的地址错了呀 内部类的使用问题 这个功能用socket能实现吗? 有谁知道java中new string(“abc”)是调用了什么东西 问一个关于Booleand的简单的问题
import java.util.ArrayList;
import java.util.List;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class Word2Pdf {static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。
static final int wdFormatPDF = 17;// PDF 格式public static void main(String[] args) {
List list = new ArrayList();
File file1= new File("D:\\file1.doc");
File file2= new File("D:\\file2.doc");
File file3= new File("D:\\file3.doc");
list.add(file1);
list.add(file2);
list.add(file3);
uniteDoc(list,"d:\\file.doc");
}
public static void uniteDoc(List fileList, String savepaths) {
if (fileList.size() == 0 || fileList == null) {
return;
}
//打开word
ActiveXComponent app = new ActiveXComponent("Word.Application");//启动word try {
// 设置word不可见
app.setProperty("Visible", new Variant(false));
//获得documents对象
Object docs = app.getProperty("Documents").toDispatch();
//打开第一个文件
Object doc = Dispatch
.invoke(
(Dispatch) docs,
"Open",
Dispatch.Method,
new Object[] { (String) fileList.get(0),
new Variant(false), new Variant(true) },
new int[3]).toDispatch();
//追加文件
for (int i = 1; i < fileList.size(); i++) { Dispatch.invoke(app.getProperty("Selection").toDispatch(),
"insertFile", Dispatch.Method, new Object[] {
(String) fileList.get(i), "",
new Variant(false), new Variant(false),
new Variant(false) }, new int[3]);
} //保存新的word文件
Dispatch.invoke((Dispatch) doc, "SaveAs", Dispatch.Method,
new Object[] { savepaths, new Variant(1) }, new int[3]); Variant f = new Variant(false);
Dispatch.call((Dispatch) doc, "Close", f); } catch (Exception e) {
throw new RuntimeException("合并word文件出错.原因:" + e);
} finally {
app.invoke("Quit", new Variant[] {});
}
}
}