Java借助Spire.Doc for Java庫(kù)合并Word文檔
在 Java 開發(fā)項(xiàng)目中,經(jīng)常需要將多個(gè) Word 文檔合并成一個(gè)完整文件,例如生成報(bào)告、合同匯總或文檔歸檔。傳統(tǒng)方式需要手動(dòng)復(fù)制粘貼,不僅費(fèi)時(shí)還容易出錯(cuò)。通過(guò) Spire.Doc for Java 庫(kù),我們可以輕松實(shí)現(xiàn)這一操作。它提供了直觀的 API,支持兩種常用合并方式:一種會(huì)在新頁(yè)面插入完整文檔,另一種則連續(xù)追加內(nèi)容而不換頁(yè)。
前提準(zhǔn)備
首先在項(xiàng)目中引入 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.* 包。
方法一:整文檔插入(新頁(yè)面開始)
適合需要清晰分頁(yè)的場(chǎng)景。Spire.Doc 的 insertTextFromFile() 方法可直接將整個(gè)文檔插入。
import com.spire.doc.*;
public class MergeByInsert {
public static void main(String[] args) {
// 加載主文檔
Document document = new Document("input/Sample1.docx");
// 依次插入其他文檔(從新頁(yè)面開始)
document.insertTextFromFile("input/Sample2.docx", FileFormat.Docx_2013);
document.insertTextFromFile("input/Sample3.docx", FileFormat.Docx_2013);
// 保存合并結(jié)果
document.saveToFile("output/Merged.docx", FileFormat.Docx_2013);
}
}
方法二:內(nèi)容克隆追加(連續(xù)流式合并)
如果不想強(qiáng)制分頁(yè),可以克隆第二個(gè)文檔的所有內(nèi)容追加到第一個(gè)文檔的末尾。適合保持統(tǒng)一格式的場(chǎng)景。
import com.spire.doc.*;
public class MergeByClone {
public static void main(String[] args) {
// 加載第一個(gè)文檔作為基礎(chǔ)
Document mainDoc = new Document("input/Sample1.docx");
// 支持合并多個(gè)文檔
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);
}
}
實(shí)用提示
- 錯(cuò)誤處理:建議在加載文檔前添加
try-catch捕獲Exception,并檢查文件路徑是否存在。 - 格式保留:兩種方法均能較好保留原樣式、表格、圖片。如果需要更精細(xì)控制,可先獲取
Paragraph或Table對(duì)象再追加。 - 批量合并:將文件路徑放入列表或文件夾掃描,實(shí)現(xiàn)自動(dòng)化處理。
- 性能:對(duì)于大文件,推薦分批處理或使用臨時(shí)許可證移除評(píng)估水印。
通過(guò)以上代碼,你可以在幾分鐘內(nèi)完成合并功能,極大提升開發(fā)效率。實(shí)際項(xiàng)目中可封裝成工具類,復(fù)用更方便。
到此這篇關(guān)于Java借助Spire.Doc for Java庫(kù)合并Word文檔的文章就介紹到這了,更多相關(guān)Java合并Word文檔內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼與示例解析
本文主要介紹Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼,這里給大家一個(gè)小示例以便理解,有需要的小伙伴可以參考下2016-08-08
mybatis-flex實(shí)現(xiàn)鏈?zhǔn)讲僮鞯氖纠a
MyBatis-Flex它提供了一種鏈?zhǔn)讲僮鞣绞?本文主要介紹了mybatis-flex實(shí)現(xiàn)鏈?zhǔn)讲僮鞯氖纠a,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06
Spring?security?oauth2以redis作為tokenstore及jackson序列化失敗問(wèn)題
這篇文章主要介紹了Spring?security?oauth2以redis作為tokenstore及jackson序列化失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教<BR>2024-04-04
spring為類的靜態(tài)屬性實(shí)現(xiàn)注入實(shí)例方法
在本篇文章里小編給大家整理的是關(guān)于spring為類的靜態(tài)屬性實(shí)現(xiàn)注入實(shí)例方法,有需要的朋友們可以參考下。2019-10-10
SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼
這篇文章主要介紹了SpringMVC+Spring+Mybatis實(shí)現(xiàn)支付寶支付功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
java.imageIo給圖片添加水印的實(shí)現(xiàn)代碼
最近項(xiàng)目在做一個(gè)商城項(xiàng)目, 項(xiàng)目上的圖片要添加水?、?添加圖片水印;②:添加文字水印;一下提供下個(gè)方法,希望大家可以用得著2013-07-07
java sftp下載文件報(bào)錯(cuò)Caused by:com.jcraft.jsch.JSchExcep
文章講述了作者在日常工作中遇到的JSch連接問(wèn)題,經(jīng)過(guò)分析發(fā)現(xiàn)是由于連接泄露導(dǎo)致的,作者提出了解決方案,并給出了使用建議:1.在finally代碼塊中關(guān)閉連接;2.在真正使用階段再創(chuàng)建連接,避免創(chuàng)建后不使用又忘記關(guān)閉連接2024-11-11
MyBatisPlus mybatis-plus-join使用及說(shuō)明
本文介紹了MyBatisPlus的基本使用、集成SpringBoot的方法、代碼生成器等核心功能,以及@TableName、@TableField等注解的使用方法,并詳細(xì)說(shuō)明了批量插入、Join查詢、StopWatch計(jì)時(shí)和Hutool工具的使用2026-04-04

