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

如何在C#中拆分Excel单元格内的多行内容

嗨,这个问题我刚好在项目里处理过!Excel里用Alt+Enter插入的多行内容,本质是单元格值里包含了换行符\n(少数旧版本可能是\r\n),咱们用C#读取时只要针对性拆分这些换行符就行。下面给你两种最常用的实现方案,都是实际项目里验证过的:

方案一:使用EPPlus库(推荐,操作简便)

EPPlus是目前.NET生态里处理Excel最流行的库之一,对多行单元格的支持很友好。

  1. 先通过NuGet安装EPPlus:Install-Package EPPlus(或者在NuGet包管理器里搜索安装)
  2. 读取并拆分单元格的示例代码:
using OfficeOpenXml;

// 初始化Excel包(注意:EPPlus 5+需要设置LicenseContext)
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
using var package = new ExcelPackage(new FileInfo("你的Excel文件路径.xlsx"));
var worksheet = package.Workbook.Worksheets[0]; // 获取第一个工作表

// 读取目标单元格(比如A1单元格)
var cellValue = worksheet.Cells["A1"].Text;
// 拆分多行内容,自动移除空行
var splitValues = cellValue.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);

// 遍历输出拆分后的值
foreach (var value in splitValues)
{
    Console.WriteLine($"拆分后的值:{value.Trim()}"); // 可选:Trim去掉前后空格
}

注意:EPPlus的Text属性会直接返回包含换行符的单元格文本,不需要额外处理富文本格式,非常省心。

方案二:使用NPOI库(兼容旧版Excel格式)

如果你的项目需要兼容.xls格式(Excel 2003及以前),NPOI是更好的选择。

  1. 通过NuGet安装NPOI:Install-Package NPOI
  2. 读取并拆分的示例代码:
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel; // 处理.xlsx
// using NPOI.HSSF.UserModel; // 如果是.xls格式,替换成这个

using var fs = new FileStream("你的Excel文件路径.xlsx", FileMode.Open, FileAccess.Read);
var workbook = new XSSFWorkbook(fs); // 对应.xlsx;.xls用HSSFWorkbook
var worksheet = workbook.GetSheetAt(0);
var row = worksheet.GetRow(0); // 获取第一行
var cell = row.GetCell(0); // 获取A1单元格

string cellValue;
// 处理不同的单元格类型
if (cell.CellType == CellType.String)
{
    cellValue = cell.StringCellValue;
}
else if (cell.CellType == CellType.Formula && cell.CachedFormulaResultType == CellType.String)
{
    cellValue = cell.StringCellValue;
}
else
{
    // 其他类型转字符串
    cellValue = cell.ToString();
}

// 拆分多行内容
var splitValues = cellValue.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);

// 输出结果
foreach (var value in splitValues)
{
    Console.WriteLine($"拆分后的值:{value.Trim()}");
}
额外注意事项
  • 有些特殊情况下,单元格里的换行可能是\r(比如旧版Excel导出的文件),所以用new[] { '\n', '\r' }作为拆分条件,再加上StringSplitOptions.RemoveEmptyEntries,可以避免拆分出空字符串。
  • 如果单元格里的每行内容前后有空格,可以在拆分后用Trim()去掉,让结果更干净。

内容的提问来源于stack exchange,提问作者Hoa Huỳnh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:36:20