我們很高興宣佈 GroupDocs.Merger for .NET v26.9 已於 2026 年 9 月 正式發佈。此版本引入了按行合併試算表、透過 PageBuilder 改進 TIFF 頁面選取、增強預覽尺寸處理、解決 Visio 與 DOC 輸出在多執行緒下的併發問題,並將多個沉默失敗模式替換為明確的例外——使 API 更加穩健且可預測。
本次發佈的新功能
- [Feature] 從多個檔案的 Excel 中合併列至單一工作表 (MERGERNET-2198)
- [Feature] 將 PageBuilder 的頁面選取套用至第一個 TIFF 文件 (MERGERNET-1372)
- [Improvement] 當
SetLicense找不到授權檔案時拋出例外 (MERGERNET-2183) - [Improvement]
SetLicense接收空的授權串流時拒絕 (MERGERNET-2184) - [Improvement] 當將影像或音訊檔案合併至不支援的格式時拋出明確例外 (MERGERNET-2190)
- [Improvement] 從跨平台套件中移除
System.Drawing.Common,並清楚回報缺少的相依性 (MERGERNET-2202) - [Bug] 在 Merger 以路徑開啟或合併文件後關閉來源檔案 (MERGERNET-2187)
- [Bug] 建構 Merger 時僅呼叫一次串流工廠 (MERGERNET-2189)
- [Bug] 在多執行緒下將 PDF 或 XPS 文件合併至 DOC 時修正損毀的 DOC 輸出 (MERGERNET-2192)
- [Bug] 當未指定頁碼時,對每一頁套用頁面方向變更 (MERGERNET-2194)
- [Bug] 在每種文件格式族中遵守請求的預覽寬度與高度 (MERGERNET-2196)
- [Bug] 當
ExtractPages與RemovePages未提供頁碼時,拒絕執行而非靜默產生空白或未變更的文件 (MERGERNET-2197) - [Bug] 修正同時處理 Visio 文件時偶爾拋出
ArgumentNullExceptiontrueTypeFont 的問題 (MERGERNET-2199) - [Bug] 修正 PDF 投資組合在嵌入檔案未提供修改日期時拋出
NullReferenceException的問題 (MERGERNET-2200)
公開 API 變更
1. 試算表合併 — 按行模式(新 API)
GroupDocs.Merger.Domain.Options 命名空間中新公開的類型:
| 類型 | 說明 |
|---|---|
| SpreadsheetJoinOptions | 試算表的合併選項,繼承自 PageJoinOptions。屬性:Mode、SkipRows、SheetMatching。 |
| SpreadsheetJoinMode | Worksheets(預設)將合併檔案的工作表作為獨立工作表加入,行為與以往相同。Rows 會將每個合併檔案的列依序附加在結果相符工作表的最後一列之下。 |
| SpreadsheetSheetMatching | ByIndex(預設)將第 2 張工作表合併至第 2 張工作表,第 3 張合併至第 3 張,依此類推;FirstSheetOnly 只合併每個檔案的第一張工作表。 |
SkipRows會跳過每個合併檔案的前 N 列(例如標題列)。第一個文件始終完整保留。SkipRows與SheetMatching在Worksheets模式下不會產生作用。- 支援的格式:XLSX、XLS、XLSM、XLSB、XLTX、XLTM、XLT、XLAM 以及 ODS。
- 會保留的項目:儲存格值、公式(相對參照會自動調整)、樣式、合併儲存格與列高。不會保留的項目:圖表、圖片、樞紐分析表、表格、條件格式與資料驗證。
- 若
SkipRows為負數,會拋出GroupDocsMergerException(「The count of rows to skip can not be negative.」)。 - 超過列數上限(XLS/XLT 為 65,536 列,其他格式為 1,048,576 列)會拋出
GroupDocsMergerException。 - 在
Rows模式下仍在等待合併的試算表時,呼叫ApplyPageBuilder會拋出GroupDocsMergerException。
2. TIFF — PageBuilder 套用至第一個文件的頁面選取
無 API 變更。CreatePageBuilder 與 ApplyPageBuilder 現在會套用從第一個 TIFF 文件選取的頁面;先前會始終包含第一個文件的全部頁面。未使用 PageBuilder 的合併仍保持原有行為。
在使用 ImageJoinOptions 進行合併後,CreatePageBuilder 與 ApplyPageBuilder 會拋出 GroupDocsMergerException,因為合併的影像會被組成單一版面配置,而非頁面序列。
3. 授權 — SetLicense 不再靜默失敗
License.SetLicense(string licensePath)若找不到授權檔案,會拋出InvalidOperationException(「License not found: …」)。License.SetLicense(Stream licenseStream)若傳入空的串流,會拋出ArgumentNullException。
4. 使用空頁面清單的頁面操作
ExtractPages與RemovePages若未提供頁碼,現在會拋出GroupDocsMergerException(「There are no page numbers to extract.」/「There are no page numbers to remove.」)。ChangeOrientation若未提供頁碼,會對 PDF、XPS、文字處理、試算表與 Visio 文件的每一頁變更方向。
5. 預覽尺寸
GeneratePreview 現在會將每頁影像調整為請求的 Width 與 Height——若同時提供兩者,影像會被拉伸至完全符合該尺寸。負的 Width 或 Height 會拋出 GroupDocsMergerException。
6. System.Drawing.Common 與缺少的相依性
- 跨平台套件(
GroupDocs.Merger.Net60、GroupDocs.Merger.Net80、GroupDocs.Merger.Net100)不再依賴System.Drawing.Common。 - 若執行時缺少必要的相依性,會拋出
MissingDependencyException,並說明缺少的元件與安裝說明。
7. 將影像或音訊合併至不支援的格式
若將影像或音訊檔案合併至不支援的文件格式,現在會拋出 FileTypeNotSupportedException(「Joining ‘…’ into ‘…’ is not supported」)。
新功能
- 按行試算表合併:現在可以將多個試算表的列附加至單一工作表,而非僅作為獨立工作表加入,並提供跳過標題列與依位置匹配工作表的選項。
- TIFF 文件的 PageBuilder:使用
PageBuilder所選取的頁面現在也會套用至第一個 TIFF 文件——先前會始終包含其全部頁面。 - 精確的預覽尺寸:
GeneratePreview現在會在每種文件格式族中返回符合請求Width與Height的影像。 - 併發修正:Visio 與 DOC 輸出在多執行緒處理時不再偶爾失敗。
- 資源處理:以檔案路徑開啟或合併的文件不再保持來源檔案開啟;串流工廠僅會被呼叫一次。
- 更清晰的錯誤:先前靜默失敗的多項操作現在會拋出具描述性的例外。
程式碼範例
using GroupDocs.Merger;
using GroupDocs.Merger.Domain.Options;
using (var merger = new Merger("january.xlsx"))
{
var options = new SpreadsheetJoinOptions
{
Mode = SpreadsheetJoinMode.Rows, // 將列附加至現有工作表
SkipRows = 1 // 跳過每個合併檔案的標題列
};
merger.Join("february.xlsx", options);
merger.Join("march.xlsx", options);
merger.Save("q1.xlsx");
}
如何取得更新
NuGet
- 套件: GroupDocs.Merger 26.9.0
- 安裝指令:
dotnet add package GroupDocs.Merger --version 26.9.0