如何合併和取消合併 Excel 儲存格

如何使用IronXL在C#中合併和拆分儲存格

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

IronXL使C#開發者可以通過簡單的方法,如Unmerge(),將多個Excel儲存格合併成一個較大的儲存格或將其拆分回個別儲存格,提供了格式和資料展示的靈活性,無需使用Excel Interop。

快速入門:使用一次調用合併一個儲存格範圍

只需幾行程式碼,您就可以載入工作簿,使用IronXL的Merge方法合併指定的儲存格範圍,然後保存文件。這是為開發人員設計的,以便在無需Excel Interop的情況下輕鬆開始合併儲存格。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronXL.Excel

    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

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

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文件或正在開發需要保留現有格式的工具時至關重要。

檢索合併區域的使用情境包括:

  • 模板處理:在填充資料之前識別模板中的合併區域
  • 格式複製:從一個工作表複製合併模式到另一個工作表
  • 資料驗證:在處理含有合併儲存格的文件時確保資料完整性
  • 報告生成:為動態報告建立時理解現有合併模式

合併區域以什麼順序返回?

合併區域按其建立時間的時間順序返回。 當使用基於索引的拆分操作時,這一排序非常重要。 理解這個順序有助於在實施如撤銷/重做功能或需要為處理選擇特定範圍時。

如何使用IronXL在Excel中拆分儲存格?

拆分合併的區域可以使用兩種不同的方法來完成。 第一種和最簡單的方法涉及指定儲存格地址,如B3:B6,以拆分儲存格。

或者,您可以基於合併區域的索引拆分儲存格。 合併的區域按時間順序列出。 要做到這一點,首先檢索合併的區域,然後將所需的索引傳遞給Unmerge方法。 這種靈活性使您可以以程式方式處理Excel文件時應對各種情境。

請注意儲存格地址必須與合併區域完全對應。 您無法拆分合併區域的部分。

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

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

// Unmerge the merged region of B7 to E7
workSheet.Unmerge("B7:E7");

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

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

' Unmerge the merged region of B7 to E7
workSheet.Unmerge("B7:E7")

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

拆分儲存格時的常見問題是什麼?

Excel試算表比較展示合併儲存格(左)與未合併儲存格(右)的員工資料

我應該使用哪種拆分方法?

當您知道確切的合併區域座標時使用基於地址的拆分方法。 當以程式方式遍歷所有合併區域或確切的地址可能會有所不同時使用基於索引的拆分方法。 這裡有一個對比來幫助您決定:

基於地址的拆分:

  • 最適合於已知合併模式的靜態模板
  • 理想用於處理標準化報告
  • 在處理特定區域時程式碼更簡單

基於索引的拆分:

  • 完美適用於具有多變合併模式的動態試算表
  • 在處理使用者上傳的文件時非常有用
  • 對於批量處理多個合併區域效果更佳

對於涉及複雜儲存格操作的情境,請參閱IronXL API參考以發現用於高效處理合併儲存格的其他方法和屬性。

常見問題

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

您可以使用 IronXL 的 Merge 方法在 C# 中合併 Excel 儲存格。只需載入您的活頁簿,呼叫帶有儲存格範圍的 Merge 方法 (例如 ws.Merge("B3:D3")),然後保存檔案。這可以在不需要 Excel Interop 的情況下將多個儲存格合併為一個較大的儲存格。

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

using IronXL 合併儲存格時,過程合併儲存格而不刪除任何現有值或資料。僅合併區域中的第一個儲存格的值會顯示在合併的儲存格中,但 IronXL 仍允許您以程式方式存取所有原始值。

為什麼合併儲存格有時會引起 Excel 衝突?

Excel 衝突通常發生在合併的儲存格與篩選範圍重疊或嘗試排序包含合併儲存格的資料時。IronXL 有助於識別這些問題 - 在篩選範圍內合併儲存格可能需要 Excel 修復才能正確查看試算表。

我可以取消合併先前合併的儲存格嗎?

是的,IronXL 提供的 Unmerge 方法允許您將合併的儲存格還原為原始個別的儲存格。您可以通過指定範圍地址或索引來取消合併,提供資料分析和格式調整的靈活性。

合併儲存格是否需要安裝 Microsoft Excel 才能編程?

不需要,IronXL 允許您在 C# 中合併和取消合併 Excel 儲存格而不需要安裝 Microsoft Excel 或 Excel Interop。程式庫可獨立運行,非常適合伺服器環境和自動化過程。

合併儲存格對於建立格式化標題有用嗎?

是的,IronXL 的合併功能特別適合在使用格式化標題的試算表中或使用 Excel 模板時。它允許您通過合併儲存格來建立專業外觀的佈局以用於標題和節標。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

想要快速證明嗎? PM > Install-Package IronXL.Excel
運行一個範例 觀看您的資料成為試算表。