You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ClosedXml和C#合并Excel工作表中的两列

使用ClosedXml和C#合并Excel工作表Q、R列实现方案

前置准备

首先安装ClosedXml依赖,可通过NuGet包管理器搜索安装,或执行包管理器控制台命令:
Install-Package ClosedXML

场景1:视觉合并单元格(每行Q、R列合并为一个单元格)

适用于需要将两行单元格在界面上合并展示的需求,代码如下:

using ClosedXML.Excel;

// 加载本地Excel文件
using var workbook = new XLWorkbook("你的原文件路径.xlsx");
// 选取目标工作表,可按索引取(比如第一个表为.Worksheet(1))
var worksheet = workbook.Worksheet("目标工作表名称");

// 遍历工作表所有已使用的行
foreach (var row in worksheet.RangeUsed().Rows())
{
    // 如需跳过表头,可添加判断:if(row.RowNumber() == 1) continue;
    // 合并当前行的第17列(Q)到第18列(R)
    row.Cell(17).Merge().To(row.Cell(18));
}

// 保存修改后的文件
workbook.SaveAs("输出文件路径.xlsx");

注意:单元格合并后默认仅展示左上角(Q列)原有内容,如需同时保留两列内容,可在合并前先拼接内容赋值给Q列:
row.Cell(17).Value = $"{row.Cell(17).Value} {row.Cell(18).Value}";

场景2:合并两列内容到单独一列

适用于不需要调整单元格结构,仅需把Q、R两列的内容拼接后存储的需求,代码如下:

using ClosedXML.Excel;

using var workbook = new XLWorkbook("你的原文件路径.xlsx");
var worksheet = workbook.Worksheet("目标工作表名称");

foreach (var row in worksheet.RangeUsed().Rows())
{
    // 按需调整拼接规则,可添加分隔符、格式转换逻辑
    string mergedText = $"{row.Cell(17).Value?.ToString()}{row.Cell(18).Value?.ToString()}";
    // 这里是赋值到S列(第19列),也可直接覆盖Q/R列
    row.Cell(19).Value = mergedText;
}

workbook.SaveAs("输出文件路径.xlsx");

常用补充配置

  • 列索引对应规则:Excel中A列对应索引1,以此类推Q=17、R=18、S=19
  • 合并后可统一设置对齐样式:worksheet.Columns(17,18).Style.Alignment.Horizontal = XLAlignmentHorizontalValues.Center;

内容的提问来源于stack exchange,提问作者Sushmit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 20:15:04