Java借助Spire.Doc for Java库合并Word文档

 更新时间:2026年03月24日 11:42:42   作者:缺点内向  
在 Java 开发项目中,经常需要将多个 Word 文档合并成一个完整文件,通过 Spire.Doc for Java 库,我们可以轻松实现这一操作,下面小编就和大家详细介绍一下吧

在 Java 开发项目中,经常需要将多个 Word 文档合并成一个完整文件,例如生成报告、合同汇总或文档归档。传统方式需要手动复制粘贴,不仅费时还容易出错。通过 Spire.Doc for Java 库,我们可以轻松实现这一操作。它提供了直观的 API,支持两种常用合并方式:一种会在新页面插入完整文档,另一种则连续追加内容而不换页。

前提准备

首先在项目中引入 Spire.Doc for Java 依赖(推荐使用 Maven):

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>14.3.1</version>
    </dependency>
</dependencies>

下载 JAR 包后添加到 classpath 即可。代码中主要使用 com.spire.doc.* 包。

方法一:整文档插入(新页面开始)

适合需要清晰分页的场景。Spire.Doc 的 insertTextFromFile() 方法可直接将整个文档插入。

import com.spire.doc.*;

public class MergeByInsert {
    public static void main(String[] args) {
        // 加载主文档
        Document document = new Document("input/Sample1.docx");
        
        // 依次插入其他文档(从新页面开始)
        document.insertTextFromFile("input/Sample2.docx", FileFormat.Docx_2013);
        document.insertTextFromFile("input/Sample3.docx", FileFormat.Docx_2013);
        
        // 保存合并结果
        document.saveToFile("output/Merged.docx", FileFormat.Docx_2013);
    }
}

方法二:内容克隆追加(连续流式合并)

如果不想强制分页,可以克隆第二个文档的所有内容追加到第一个文档的末尾。适合保持统一格式的场景。

import com.spire.doc.*;

public class MergeByClone {
    public static void main(String[] args) {
        // 加载第一个文档作为基础
        Document mainDoc = new Document("input/Sample1.docx");
        
        // 支持合并多个文档
        String[] files = {"input/Sample2.docx", "input/Sample3.docx"};
        
        for (String file : files) {
            Document tempDoc = new Document(file);
            for (Object secObj : (Iterable) tempDoc.getSections()) {
                Section sec = (Section) secObj;
                for (Object obj : (Iterable) sec.getBody().getChildObjects()) {
                    DocumentObject item = (DocumentObject) obj;
                    // 追加到主文档最后一段
                    mainDoc.getLastSection().getBody().getChildObjects().add(item.deepClone());
                }
            }
        }
        
        mainDoc.saveToFile("output/Merged.docx", FileFormat.Docx_2013);
    }
}

实用提示

  • 错误处理:建议在加载文档前添加 try-catch 捕获 Exception,并检查文件路径是否存在。
  • 格式保留:两种方法均能较好保留原样式、表格、图片。如果需要更精细控制,可先获取 ParagraphTable 对象再追加。
  • 批量合并:将文件路径放入列表或文件夹扫描,实现自动化处理。
  • 性能:对于大文件,推荐分批处理或使用临时许可证移除评估水印。

通过以上代码,你可以在几分钟内完成合并功能,极大提升开发效率。实际项目中可封装成工具类,复用更方便。

到此这篇关于Java借助Spire.Doc for Java库合并Word文档的文章就介绍到这了,更多相关Java合并Word文档内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现二维码QRCode的编码和解码与示例解析

    Java实现二维码QRCode的编码和解码与示例解析

    本文主要介绍Java实现二维码QRCode的编码和解码,这里给大家一个小示例以便理解,有需要的小伙伴可以参考下
    2016-08-08
  • SpringBoot 使用log4j2的配置过程

    SpringBoot 使用log4j2的配置过程

    这篇文章主要介绍了SpringBoot 使用log4j2的配置,springboot默认是用logback的日志框架的,所以要在pom中配置排除logback。这里需要注意的是,其实不止一处使用了logback,所以要在starter中统一排除,然后引入log4j2,需要的朋友可以参考下
    2022-09-09
  • mybatis-flex实现链式操作的示例代码

    mybatis-flex实现链式操作的示例代码

    MyBatis-Flex它提供了一种链式操作方式,本文主要介绍了mybatis-flex实现链式操作的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • Spring security oauth2以redis作为tokenstore及jackson序列化失败问题

    Spring security oauth2以redis作为tokenstore及jackson序列化失败问题

    这篇文章主要介绍了Spring security oauth2以redis作为tokenstore及jackson序列化失败问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教<BR>
    2024-04-04
  • spring为类的静态属性实现注入实例方法

    spring为类的静态属性实现注入实例方法

    在本篇文章里小编给大家整理的是关于spring为类的静态属性实现注入实例方法,有需要的朋友们可以参考下。
    2019-10-10
  • SpringMVC+Spring+Mybatis实现支付宝支付功能的示例代码

    SpringMVC+Spring+Mybatis实现支付宝支付功能的示例代码

    这篇文章主要介绍了SpringMVC+Spring+Mybatis实现支付宝支付功能的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • java.imageIo给图片添加水印的实现代码

    java.imageIo给图片添加水印的实现代码

    最近项目在做一个商城项目, 项目上的图片要添加水印①,添加图片水印;②:添加文字水印;一下提供下个方法,希望大家可以用得着
    2013-07-07
  • springboot aop添加日志方式

    springboot aop添加日志方式

    这篇文章主要介绍了springboot aop添加日志方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • java sftp下载文件报错Caused by:com.jcraft.jsch.JSchException:session is down问题

    java sftp下载文件报错Caused by:com.jcraft.jsch.JSchExcep

    文章讲述了作者在日常工作中遇到的JSch连接问题,经过分析发现是由于连接泄露导致的,作者提出了解决方案,并给出了使用建议:1.在finally代码块中关闭连接;2.在真正使用阶段再创建连接,避免创建后不使用又忘记关闭连接
    2024-11-11
  • MyBatisPlus mybatis-plus-join使用及说明

    MyBatisPlus mybatis-plus-join使用及说明

    本文介绍了MyBatisPlus的基本使用、集成SpringBoot的方法、代码生成器等核心功能,以及@TableName、@TableField等注解的使用方法,并详细说明了批量插入、Join查询、StopWatch计时和Hutool工具的使用
    2026-04-04

最新评论