如何在C#中拆分Excel单元格内的多行内容
嗨,这个问题我刚好在项目里处理过!Excel里用Alt+Enter插入的多行内容,本质是单元格值里包含了换行符\n(少数旧版本可能是\r\n),咱们用C#读取时只要针对性拆分这些换行符就行。下面给你两种最常用的实现方案,都是实际项目里验证过的:
方案一:使用EPPlus库(推荐,操作简便)
EPPlus是目前.NET生态里处理Excel最流行的库之一,对多行单元格的支持很友好。
- 先通过NuGet安装EPPlus:
Install-Package EPPlus(或者在NuGet包管理器里搜索安装) - 读取并拆分单元格的示例代码:
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是更好的选择。
- 通过NuGet安装NPOI:
Install-Package NPOI - 读取并拆分的示例代码:
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
相关产品推荐
相关产品推荐

