在处理大型 Excel 文件时,经常需要合并行、列或特定单元格区域,以使数据更加整洁、易于阅读。通过 C# 或 VB.NET,只需少量代码即可实现 Excel 单元格合并,并可将内容设置为水平和垂直居中,从而获得更加美观、专业的排版效果。无论是合并整行、整列,还是格式化指定区域,本文示例都将帮助您自动完成这些操作,提高工作效率。
环境准备
如果您经常在 .NET 项目中处理 Excel 文件,例如合并单元格、设置格式或生成报表,那么使用合适的 Excel 处理库可以显著提升开发效率。Spire.XLS 提供了丰富的 Excel 操作功能,支持在 C# 和 VB.NET 中创建、读取和编辑 Excel 文件,无需依赖 Microsoft Office。您可以通过 NuGet 快速将其集成到项目中:
PM> Install-Package Spire.XLS
使用 C# 合并 Excel 中的行或列
在 Excel 中,合并行或列是整理数据和创建专业表格的常用方法。例如,可以将第一行跨多个列进行合并,以创建清晰且居中的表格标题。通过 C# 代码,您可以轻松实现这一过程的自动化,从而节省时间,并确保大型 Excel 文件中的格式保持一致。
下面的代码示例演示了如何使用 C# 合并 Excel 的第一行并将其内容居中显示:
using Spire.Xls;
namespace MergeCells
{
class Program
{
static void Main(string[] args)
{
// 创建 Workbook 实例并加载 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("\\Population.xlsx");
// 获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
// 合并第一行
sheet.Rows[0].Merge();
// 合并第一列
//sheet.Columns[0].Merge();
// 设置水平和垂直居中对齐
sheet.Rows[0].Style.HorizontalAlignment = HorizontalAlignType.Center;
sheet.Rows[0].Style.VerticalAlignment = VerticalAlignType.Center;
// 保存 Excel 文件
workbook.SaveToFile("\\Mergerowsandcenter.xls");
}
}
}
代码步骤说明:
- 创建
Workbook对象并读取 Excel 文件。 - 获取指定工作表。
- 使用
Worksheet.Rows[].Merge()方法合并指定行。 - 通过设置
Style.HorizontalAlignment和Style.VerticalAlignment属性,使内容水平和垂直居中对齐。 - 保存修改后的 Excel 文件。
上述用于合并 Excel 行的 C# 代码同样适用于合并列,相关代码已在示例中以注释形式标出。
在通过合并单元格创建整洁的表格标题后,有时您可能需要撤销该操作。此时可以使用 C# 或 VB.NET 轻松取消 Excel 单元格合并,恢复原有的单元格布局,同时不会影响其中的数据。
合并 Excel 中的指定单元格区域
使用 C# 合并 Excel 中的指定单元格区域,可用于突出显示某部分数据,例如汇总行或一组相关列。这一过程与合并整行或整列非常相似,同样可以使用 Merge() 方法,只不过需要通过 Worksheet.Range[] 获取 CellRange 对象后再调用 Merge() 方法。
通过指定需要合并的具体区域,您可以创建更加清晰、有序的表格布局,提升数据的可读性。同时,该操作还可以自动应用于多个工作表或文件,无需手动逐个调整单元格。
下面的代码示例演示了如何使用 C# 合并 Excel 工作表中的 “B6:E6” 单元格区域:
using Spire.Xls;
namespace MergeCells
{
class Program
{
static void Main(string[] args)
{
// 创建 Workbook 实例并加载 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("\\Population.xlsx");
// 获取第一个工作表
Worksheet sheet = workbook.Worksheets[0];
// 合并 Excel 中指定的单元格区域
sheet.Range["B6:E6"].Merge();
// 保存 Excel 文件
workbook.SaveToFile("\\Mergecellrange.xls");
}
}
}
知识扩展
在 C# 中,使用 EPPlus 库可以非常方便地操作 Excel 文件,包括合并单元格和设置居中样式。EPPlus 5+ 版本对于商业使用需要授权,但个人或学习用途可免费使用。
以下是一个完整的示例,演示如何:
- 创建一个 Excel 工作簿和工作表
- 填充一些数据
- 合并指定的单元格区域
- 设置合并后的单元格内容水平居中、垂直居中
- 保存文件
安装 EPPlus
通过 NuGet 包管理器安装:
Install-Package EPPlus
或在 .csproj 中添加:
<PackageReference Include="EPPlus" Version="7.1.0" />
注意:EPPlus 5 及以上版本需要设置许可证上下文(非商业使用可设置 LicenseContext.NonCommercial)。
完整代码示例
using OfficeOpenXml;
using OfficeOpenXml.Style;
using System.Drawing;
using System.IO;
namespace ExcelMergeAndCenter
{
class Program
{
static void Main(string[] args)
{
// 设置EPPlus许可上下文(非商业使用)
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// 创建Excel包
using (var package = new ExcelPackage())
{
// 添加工作表
var worksheet = package.Workbook.Worksheets.Add("Sheet1");
// 1. 填入一些示例数据
worksheet.Cells["A1"].Value = "合并单元格示例";
worksheet.Cells["A3"].Value = "普通数据1";
worksheet.Cells["B3"].Value = "普通数据2";
// 2. 合并单元格范围(例如合并 A1 到 C2)
var mergeRange = worksheet.Cells["A1:C2"];
mergeRange.Merge = true;
// 3. 设置合并后的单元格内容居中(水平和垂直)
// 方式:通过合并后单元格的Style属性
mergeRange.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
mergeRange.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
// 可选:设置字体加粗、字号等
mergeRange.Style.Font.Bold = true;
mergeRange.Style.Font.Size = 14;
mergeRange.Style.Font.Color.SetColor(Color.Blue);
// 4. 设置自动调整列宽(可选)
worksheet.Cells.AutoFitColumns(0);
// 5. 保存文件
var fileInfo = new FileInfo(@"C:\temp\MergedCentered.xlsx");
package.SaveAs(fileInfo);
System.Console.WriteLine($"文件已保存至:{fileInfo.FullName}");
}
}
}
}
关键点说明
1. 合并单元格
worksheet.Cells["A1:C2"].Merge = true;
Cells可以指定单个单元格或矩形区域(如"A1:C2")。- 设置
Merge = true即可合并该区域。
2. 设置居中样式
mergeRange.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; mergeRange.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
- 水平对齐:
ExcelHorizontalAlignment.Center - 垂直对齐:
ExcelVerticalAlignment.Center
3. 其他常用样式
- 字体加粗:
mergeRange.Style.Font.Bold = true - 背景色:
mergeRange.Style.Fill.PatternType = ExcelFillStyle.Solid; mergeRange.Style.Fill.BackgroundColor.SetColor(Color.LightGray) - 边框:
mergeRange.Style.Border.Top.Style = ExcelBorderStyle.Thin
注意事项
- 合并后只能保留左上角单元格的值,其他区域的值会被清除。
- 如果要合并的行或列中包含数据,请确保数据放在目标区域的第一个单元格。
- EPPlus 7.x 需要 .NET 6 或更高版本,若使用 .NET Framework 4.6.2 建议安装 EPPlus 5.8.x。
- 如果仅需简单操作且不想引入第三方库,可使用 Microsoft.Office.Interop.Excel,但该方式需要安装
总结
通过本文介绍的方法,您可以使用 C# 轻松实现 Excel 单元格合并操作,无论是合并整行、整列,还是指定的单元格区域,都能够通过代码高效完成。借助 Excel 处理库,您可以将这些操作自动化执行,从而减少手动编辑工作,创建更加整洁、专业的电子表格。
如果您经常需要批量处理 Excel 文件、生成报表或统一表格格式,不妨尝试使用相关工具来提升开发效率和工作质量。













