我們很高興宣佈 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 文件時偶爾拋出 ArgumentNullException trueTypeFont 的問題 (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

直接下載

資源