如何合併和取消合併 Excel 中的單元格

如何使用 IronXL 在 C# 中合併和解除合併儲存格。

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL 可讓 C# 開發人員使用 Merge("B3:D3")Unmerge() 等簡單的方法,將多個 Excel 單元格合併為一個較大的單元格,或解除合併回到單獨的單元格,在不需要 Excel Interop 的情況下,提供格式化和資料呈現的彈性。

快速入門:使用單一呼叫合併一系列儲存格

只需幾行文字,您就可以載入工作簿,使用 IronXL 的 Merge 方法合併指定的儲存格範圍,然後儲存檔案。它專為開發人員設計,讓您在沒有 Excel Interop 的情況下毫不費力地開始合併儲存格。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronXL

    PM > Install-Package IronXL.Excel

  2. 複製並運行這段程式碼。

    var ws = WorkBook.Load("file.xlsx").DefaultWorkSheet; ws.Merge("B3:D3"); ws.SaveAs("merged.xlsx");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronXL,免費試用!
    arrow pointer

如何在 Excel 中使用 C# 合併儲存格?

Merge 方法可用於合併一個儲存格範圍。 過程會將儲存格合併,而不會刪除任何現有值或數據,但只會顯示合併區域中第一個儲存格的值。 但是,合併儲存格的值在 IronXL 中仍然可以存取。 當 使用格式化標題來建立試算表,或使用 Excel 範本時,此功能尤其有用。

請注意 在篩選範圍內合併單元格會導致 Excel 檔案產生衝突,需要修復 Excel 才能檢視試算表。

下面的程式碼範例示範如何透過指定位址來合併一系列儲存格。

:path=/static-assets/excel/content-code-examples/how-to/csharp-excel-merge-cells-merge.cs
using IronXL;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

var range = workSheet["B2:B5"];

// Merge cells B7 to E7
workSheet.Merge("B7:E7");

// Merge selected range
workSheet.Merge(range.RangeAddressAsString);

workBook.SaveAs("mergedCell.xlsx");
Imports IronXL

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

Private range = workSheet("B2:B5")

' Merge cells B7 to E7
workSheet.Merge("B7:E7")

' Merge selected range
workSheet.Merge(range.RangeAddressAsString)

workBook.SaveAs("mergedCell.xlsx")
$vbLabelText   $csharpLabel

合併時儲存格值會發生什麼變化?

Excel 合併儲存格示範,顯示跨列合併高亮儲存格前後的員工資料

為什麼合併儲存格有時會造成 Excel 衝突?

細胞合併是指將兩個或多個相鄰細胞合併成一個更大的細胞的過程。 解除合併單元是一個相反的過程,合併的單元會重新分割成原本的單獨單元。 此功能可實現靈活性、一致性和更好的數據分析。 在使用 單元格格式化 造型單元時,合併的單元格有時會干擾其他 Excel 功能,例如排序和篩選。

Excel 衝突通常發生在合併的儲存格與篩選範圍重疊時,或嘗試排序包含合併儲存格的資料時。 出現這些問題的原因是 Excel 將合併的儲存格視為單一單位,這可能會擾亂該範圍內個別儲存格的正常作業。 在管理工作表和規劃試算表結構時,瞭解這些限制會有所幫助。

何時應該在商業應用程式中使用單元格合併?

儲存格合併對於建立跨越多列的標題、格式化報告以獲得更好的視覺呈現,以及建立具有更大輸入區域的表單尤其有用。 常用於發票範本、儀表板和資料輸入表單。 當 從商業應用程式匯出至 Excel 時,合併的儲存格有助於建立外觀專業的文件。

常見的商業情境包括

  • 報告標題:建立跨越資料寬度的標題
  • 儀表板設計:為摘要統計或 KPI 組合儲存格
  • 表格建立:合併儲存格以擴大文字輸入區域
  • 發票範本:使用合併的單元格為公司資訊建立專業的版面設計

如何擷取工作表中所有合併的區域?

擷取合併區域對於識別 Microsoft Excel 等試算表視覺化軟體中的顯示值非常有用。 若要取得合併區域的清單,請使用 GetMergedRegions 方法。 這在載入現有試算表以瞭解其結構時尤其有用。

:path=/static-assets/excel/content-code-examples/how-to/csharp-excel-merge-cells-retrieve-merged-regions.cs
using IronXL;
using System.Collections.Generic;
using System;

WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.DefaultWorkSheet;

// Apply merge
workSheet.Merge("B4:C4");
workSheet.Merge("A1:A4");
workSheet.Merge("A6:D9");

// Retrieve merged regions
List<IronXL.Range> retrieveMergedRegions = workSheet.GetMergedRegions();

foreach (IronXL.Range mergedRegion in retrieveMergedRegions)
{
    Console.WriteLine(mergedRegion.RangeAddressAsString);
}
Imports IronXL
Imports System.Collections.Generic
Imports System

Dim workBook As WorkBook = WorkBook.Create()
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet

' Apply merge
workSheet.Merge("B4:C4")
workSheet.Merge("A1:A4")
workSheet.Merge("A6:D9")

' Retrieve merged regions
Dim retrieveMergedRegions As List(Of IronXL.Range) = workSheet.GetMergedRegions()

For Each mergedRegion As IronXL.Range In retrieveMergedRegions
    Console.WriteLine(mergedRegion.RangeAddressAsString)
Next
$vbLabelText   $csharpLabel

為什麼我需要以程式方式取得合併區域?

當您需要分析試算表結構、驗證資料完整性或複製其他工作表的格式時,取得合併區域會有所幫助。 對於處理範本或執行自動試算表修改的應用程式而言,這是不可或缺的。 當 程式化編輯 Excel 檔案或建立需要保留現有格式的工具時,這項能力變得非常重要。

檢索合併區域的使用案例包括

  • 範本處理:在填入資料之前識別範本中的合併區域
  • 格式複製:從一個工作表複製合併樣式到另一個工作表
  • 資料驗證:在處理有合併單元的檔案時確保資料完整性
  • 報告產生:瞭解動態報表建立的現有合併模式

合併區域會以何種順序返回?

合併後的區域會依據建立時間的順序傳回。 在使用基於索引的解合操作時,此排序非常重要。 在實作撤消/重做功能等功能或需要 選擇特定範圍進行處理時,瞭解此順序將有所幫助。

如何在 Excel 中使用 IronXL.Excel 複製單元格?

可以透過兩種不同的方法取消合併區域的合併。 第一個也是最簡單的方法是指定要解除合併的儲存格位址,例如 B3:B6

另外,您也可以根據合併區域的索引來取消合併儲存格。 合併區域依時間順序排列。 若要執行此功能,請先擷取合併的區域,並傳送所需的索引至 Unmerge 方法。 這種靈活性可讓您在以程式化方式處理 Excel 檔案時處理各種情況。

[{i:(儲存格位址必須與合併區域完全對應。 您無法取消合併區域的部分內容。