读书人

关于jacob操作word文档的有关问题

发布时间: 2012-12-17 09:31:40 作者: rapoo

请教高手,关于jacob操作word文档的问题,怎么把二份word合并成一个。
本帖最后由 liuzhengkang 于 2010-07-23 18:28:14 编辑 请教高手,关于jacob操作word文档的问题,怎么把二份word合并成一个。

刚在网上找到这么一段代码,
jacob操作API
http://www.cnblogs.com/BruceLeey/archive/2009/09/28/1575577.html
但是没有复制、粘贴的方法,

我现在是想,打开二份word,把其中一个【2.doc】全选复制,然后粘贴到另一个【1.doc】文档的后面,再把【1.doc】另存为【3.doc】,这个【3.doc】就是我要的文档了。
请问下面这几个方法怎么用,我怎么试都不行。


Dispatch.call(range, "Copy");
Dispatch.call(textRange, "Paste");

[最优解释]
用POI,直接取出内容,再合并
[其他解释]
不用POI。jacob怎么操作啊。
[其他解释]
帖子又沉了,顶上去,希望高手帮忙。。
[其他解释]
期待高手。。。
[其他解释]
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[] {});
}

}
}

[其他解释]
5楼的用了,是可以的,但是如果我的2个文档,一个是横向排列,一个是纵向排列的,页眉也不一样,合并后,却以第一个文档的设置为准,第二个文档也横向排了,我要的是,保持原来格式不变,只是向下黏贴(每个文档后都换页了,但是要么全是横的,要么全是纵的,这样不好)

读书人网 >J2SE开发

热点推荐