一、合并word文档
合并文档可以是将两个包含一定逻辑关系的文档合并成一个完整的文档,也可以是出于方便文档存储、管理的目的合并多个文档为一个文档。下面,就将以上文档操作需求,通过Java程序来实现Word文档合并。合并文档可以分为2种方法来进行:
方法1. 加载两个文档,将文档2插入到文档1。使用该方法合并文档时,被合并文档的内容默认从新的一页开始显示。
方法2. 获取文档1的最后一个section,然后将文档2中的段落作为新的段落添加到section。新加入的文档承接上一个文档的最后一个段落末尾开始显示。
使用工具:Free Spire.Doc for Java (免费版)
Jar文件获取及导入:
获取方法1:通过下载jar文件包。解压文件后,将lib文件夹下的Spire.Doc.jar文件导入程序。参考如下导入效果:
获取方法2:通过maven导入,可参考导入方法。
【示例1】新起一页合并Word文档
import com.spire.doc.*;
public class Merge1 {
public static void main(String[] args) {
//加载文档1
Document doc1 = new Document("test1.docx");
//调用方法将文档2插入到文档1
doc1.insertTextFromFile("test2.doc",FileFormat.Docx_2010);
//保存合并后的文档
doc1.saveToFile("Merged1.docx",FileFormat.Docx_2010);
}
}
合并效果:
【示例2】承接上文段落合并Word文档
import com.spire.doc.*;
public class Merge2 {
public static void main(String[] args){
//加载需要合并的两个文档
Document doc1 = new Document("test1.docx");
Document doc2 = new Document("test2.doc");
//获取文档1的最后一节
Section lastsec = doc1.getLastSection();
//遍历文档2的所有段落内容,添加到文档1
for (Section section:(Iterable <Section>)doc2.getSections()) {
for (DocumentObject obj:(Iterable <DocumentObject>)section.getBody().getChildObjects()
) {
lastsec.getBody().getChildObjects().add(obj.deepClone());
}
}
//保存合并后的文档
doc1.saveToFile("Merged2.docx",FileFormat.Docx_2010);
}
}
合并效果:
二、Java 插入分页符和分节符到Word文档
概述
在Word文档中,当我们想要在某个特定位置强制进行分页时,可通过插入分页符来实现, 此时分页符后的内容则自动跳转到下一页。插入分节符,则可以创建新的节以此来设置不同的文本行号、分栏数、页面页脚或页边距等特性。本文将使用Free Spire.Doc for Java控件在Java程序中演示如何将分页符和分节符插入到Word文档的指定位置。
在代码运行前,需要导入Jar包到IDEA中。导入方式有两种:其一,在官网上下载并解压Free Spire.Doc for Java产品包,然后将lib文件夹下的Spire.Doc.jar手动导入IDEA中。其二,通过Maven仓库安装导入产品及相关依赖。创建一个Maven项目,在pom.xml中键入以下代码。然后点击“Import Changes” 即可。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.doc.free</artifactId>
<version>3.9.0</version>
</dependency>
</dependencies>
代码示例
【示例1】插入分页符
Free Spire.Doc for Java提供了appendBreak方法来给Word文档中的指定段落插入分页符。
import com.spire.doc.*;
import com.spire.doc.documents.*;
public class AddPageBreak {
public static void main(String[] args) {
//加载Word文档
Document document = new Document();
document.loadFromFile("C:UsersTest1DesktopSample.docx");
//获取第一个节
Section section = document.getSections().get(0);
//插入分页符到第五个段落
Paragraph paragraph = section.getParagraphs().get(4);
paragraph.appendBreak(BreakType.Page_Break);
//保存结果文档
document.saveToFile("output/AddPageBreak.docx", FileFormat.Docx_2013);
}
}
插入效果:
【示例2】插入分节符
以下代码示例展示了如何使用Paragraph类的insertSectionBreak方法来给Word文档插入分节符,分节符的类型可以是下一页、连续、偶数页或奇数页。
import com.spire.doc.*;
import com.spire.doc.documents.*;
public class AddSectionBreak {
public static void main(String[] args) {
//加载Word文档
Document document = new Document();
document.loadFromFile("C:UsersTest1DesktopSample.docx");
//获取第一个节
Section section = document.getSections().get(0);
//插入分节符到第四个段落
Paragraph paragraph = section.getParagraphs().get(3);
//设置分节符类型(可为下一页、连续、奇数页或偶数页)
paragraph.insertSectionBreak(SectionBreakType.No_Break);
//保存结果文档
document.saveToFile("output/AddSectionBreak.docx", FileFormat.Docx_2013);
}
}
//插入分节符(4种情况)
sec.getParagraphs().get(8).insertSectionBreak(SectionBreakType.No_Break);//新节与前文内容连续,不从新一页开始
//sec.getParagraphs().get(8).insertSectionBreak(SectionBreakType.New_Page);//新节从新一页开始
//sec.getParagraphs().get(8).insertSectionBreak(SectionBreakType.Even_Page);//新节从偶数页开始
//sec.getParagraphs().get(8).insertSectionBreak(SectionBreakType.Oddpage);//新节从奇数页开始
插入效果:
总结
通过运行以上代码,我们可以成功地为Word文档插入分页符和分节符。有了分页符和分节符,除了可以对文档内容进行操作外,也能够以此来对文档进行拆分。