如何在 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 模板时,该功能尤其有用。

[{i:(在筛选范围内合并单元格会导致 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 时,合并单元格有助于创建外观专业的文档。

常见的业务场景包括

  • 报告标题:创建跨越数据宽度的标题
  • 仪表盘设计:组合单元格以汇总统计数据或关键绩效指标
  • 创建表格:合并单元格以扩大文本输入区域
  • 发票模板:使用合并单元格创建公司信息的专业布局

如何检索工作表中的所有合并区域?

检索合并区域有助于在 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 在 Excel 中合并单元格?

可以通过两种不同的方法取消合并区域的合并。 第一种也是最简单的方法是指定要取消合并的单元格地址,如 B3:B6

您也可以根据合并区域的索引取消合并单元格。 合并区域按时间顺序排列。 为此,首先检索合并的区域,然后将所需的索引传递给 Unmerge 方法。 这种灵活性允许您在以编程方式处理 Excel 文件时处理各种情况。

[{i:(单元格地址必须与合并区域完全对应。 您不能取消合并区域的部分内容。

: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电子表格对比,显示合并单元格(左)与未合并单元格(右)的员工数据

我应该使用哪种 Unmerge 方法?

当您知道准确的合并区域坐标时,请使用基于地址的解合并。 在以编程方式遍历所有合并区域或确切地址可能不同时,使用基于索引的取消合并。 以下是一份比较,帮助您做出决定:

基于地址的拆分:

  • 最适合具有已知合并模式的静态模板
  • 处理标准化报告时的理想选择
  • 处理特定区域时简化代码

基于索引的拆分:

  • 非常适合具有不同合并模式的动态电子表格
  • 在处理用户上传的文件时非常有用
  • 更适合批量处理多个合并区域

对于涉及单元格操作的更复杂场景,请查阅 IronXL API 参考,以了解更多有效处理合并单元格的方法和属性。

常见问题解答

如何使用 C# 在 Excel 中合并单元格?

通过 IronXL.Excel 的 Merge 方法,您可以使用 C# 在 Excel 中合并单元格。只需加载工作簿,使用单元格区域调用 Merge 方法(例如,ws.Merge("B3:D3")),然后保存文件。这样就能将多个单元格合并为一个更大的单元格,而无需 Excel Interop。

合并单元格时,单元格值会发生什么变化?

使用 IronXL 合并单元格时,合并过程不会擦除任何现有值或数据。合并后的单元格中只会显示合并区域中第一个单元格的值,但 IronXL 仍允许您以编程方式访问所有原始值。

为什么合并单元格有时会导致 Excel 冲突?

Excel 冲突通常发生在合并单元格与筛选范围重叠或尝试对包含合并单元格的数据进行排序时。IronXL.Excel 可帮助识别这些问题--在筛选器范围内合并单元格可能需要对 Excel 进行修复才能正确查看电子表格。

我可以取消合并以前合并过的单元格吗?

是的,IronXL 提供了一种 Unmerge 方法,允许您将合并的单元格拆分成原来的单个单元格。您可以通过指定范围地址或索引来取消合并,从而为数据分析和格式调整提供灵活性。

我需要安装 Microsoft Excel 才能以编程方式合并单元格吗?

不,IronXL 允许您在 C# 中合并和取消合并 Excel 单元格,而无需安装 Microsoft Excel 或 Excel Interop。该库可独立运行,因此非常适合服务器环境和自动化流程。

合并单元格对创建格式化标题有用吗?

是的,IronXL.Excel 的合并功能在创建带有格式化标题的电子表格或使用 Excel 模板时特别有用。它允许你通过合并标题和章节标题的单元格来创建专业外观的布局。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 1,846,091 | 版本: 2026.2 刚刚发布