概述
在前文中,我写过如何使用Java程序来合并Excel及PDF文档的文章。那有关Word文档的合并方法将会在今天这篇文章里详细介绍。通常合并文档有两种方式,一种是直接将被合并文档的正文承接在上一个文档的最后一个段落末尾;另一种则是被合并文档的内容从新的一页开始显示。
此次代码演示所需工具是Free Spire.Doc for Java。请从官网上下载获取,解压后将lib文件夹下的Spire.Doc.jar导入IDEA中。
当然,你也可以通过maven仓库来安装产品及导入相应依赖。
代码演示
方式1:使用Document类中的insertTextFromFile方法将不同的文档合并到同一个文档。需要注意的是,被合并文档的内容默认从新的一页开始显示。
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
public class MergeFiles1 {
public static void main(String[] args) {
//获取第一个文档的路径
String filePath1 ="C:\\Users\\Test1\\Desktop\\Sample1.docx";
//获取第二个文档的路径
String filePath2 ="C:\\Users\\Test1\\Desktop\\Sample2.docx";
//加载第一个文档
Document document =new Document(filePath1);
//使用insertTextFromFile方法将第二个文档的内容插入到第一个文档
document.insertTextFromFile(filePath2, FileFormat.Docx_2013);
//保存文档
document.saveToFile("Output/MergeFiles1.docx", FileFormat.Docx_2013);
}
}
生成文档:
方式2:若需将新加入的文档承接到上一个文档的最后一个段落末尾,则可以使用下面的方法获取第一个文档的最后一个section,然后将被合并文档的正文作为新的段落添加到section。
import com.spire.doc.Document;
import com.spire.doc.DocumentObject;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
public class MergeFiles2 {
public static void main(String[] args) {
//获取第一个文档的路径
String filePath1 ="C:\\Users\\Test1\\Desktop\\Sample1.docx";
//获取第二个文档的路径
String filePath2 ="C:\\Users\\Test1\\Desktop\\Sample2.docx";
//加载第一个文档
Document document1 =new Document(filePath1);
//加载第二个文档
Document document2 =new Document(filePath2);
//获取第一个文档的最后一个section
Section lastSection = document1.getLastSection();
//将第二个文档的段落作为新的段落添加到第一个文档的最后一个section
for (Section section:(Iterable)document2.getSections()) {
for (DocumentObject obj:(Iterable )section.getBody().getChildObjects()) {
lastSection.getBody().getChildObjects().add(obj.deepClone());
}
}
//保存文档
document1.saveToFile("Output/MergeFiles2.docx", FileFormat.Docx_2013);
}
}
生成文档:
(本文完)