前言

Microsoft Word 提供了许多易于使用的文档操作工具,同时也提供了丰富的功能集供创建复杂的文档使用。在使用的时候,你可能需要复制一个文档里面的内容到另一个文档。本文介绍使用Spire.Doc for Java通过编程的方式来复制Word文档的方法,复制的内容可支持包括文本、图片、表格、超链接、书签、批注、形状、编号列表、脚注、尾注等等在内的多种元素。


程序环境

安装 Spire.Doc for Java

首先,您需要在Java程序中添加Spire.Doc.jar文件作为依赖项。 JAR文件可以从此链接下载。如果您使用Maven,则可以将以下代码添加到项目的pom.xml文件中,从而轻松地在应用程序中导入JAR文件。

代码示例

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url> https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>10.9.8</version>
    </dependency>
</dependencies>

注意:上面代码中的版本号要与下载连接中的版本号保持一致,以体验最新功能或者避免BUG。

复制 Word 文档

Spire.Doc for Java 提供了使用Document.add(((DocumentObject) object).deepClone())方法将原文本的内容复制到目标文档。

步骤

  • 创建一个Document 实例和一个目标文档Document实例。
  • 使用 Document.loadFromFile() 方法加载示例 Word 文档。
  • 遍历获取要复制的内容。
  • 使用DocumentObjectCollection.add()方法将原文本的内容复制到目标文档。
  • DocumentObject.deepClone()创建文件目标的副本。
  • 使用 saveToFile() 方法保存目标文档。

代码实现

import com.spire.doc.*;

public class CopyDoc {
    public static void main(String[] args) {
        //加载文档1
        Document doc1 = new Document();
        doc1.loadFromFile("input.docx");

        //加载文档2
        Document doc2 = new Document();
        doc2.loadFromFile("target.docx");

        //遍历文档1中的所有子对象
        for (int i = 0; i < doc1.getSections().getCount(); i++) {
            Section section = doc1.getSections().get(i);

            for( int j = 0;j< section.getBody().getChildObjects().getCount();j++)
            {
                Object object = section.getBody().getChildObjects().get(j);

                //复制文档1中的正文内容添加到文档2
                doc2.getSections().get(0).getBody().getChildObjects().add(((DocumentObject) object).deepClone());
            }
        }

        //保存文档2
        doc2.saveToFile("CopyDoc.docx", FileFormat.Docx_2013);
        doc2.dispose();
    }
}

对比图

Word示例文档如下,将左边的文档内容复制到右边的

image.png

复制结果如下:

image.png

提示:该JAR 包有免费版和商业版之分,免费版有功能和篇幅限制,篇幅很少可放心使用,若要体验完整功能,可以申请30天临时免费license使用商业版。

---THE END---


UnsolEilFlower
9 声望0 粉丝