如何在ASP.NET中将Excel第一列元素添加至List集合
提取Excel第一列所有元素到List集合的正确实现
你的代码存在几个问题,导致无法正确获取第一列的所有元素:
- 错误获取了第一行的所有列数据,而非第一列的所有行
- 仅执行了一次添加操作,没有遍历第一列的每一行
- 直接对数组调用
ToString()只会得到类型名称,无法拿到实际元素值
下面是修正后的代码:
var list = new List<string>(); using (var stream = new MemoryStream()) { await file.CopyToAsync(stream); stream.Position = 0; // 重置流位置,避免读取异常 ExcelPackage.LicenseContext = LicenseContext.NonCommercial; using (var package = new ExcelPackage(stream)) { ExcelWorksheet worksheet = package.Workbook.Worksheets[0]; int rowCount = worksheet.Dimension?.Rows ?? 0; // 处理工作表为空的情况 // 遍历第一列的每一行(从第1行开始,可根据实际表头情况调整起始行) for (int row = 1; row <= rowCount; row++) { var cellValue = worksheet.Cells[row, 1].Value; // 将单元格值转为字符串,空值处理为空字符串 list.Add(cellValue?.ToString() ?? string.Empty); } } }
代码说明:
- 重置了流的位置
stream.Position = 0:因为CopyToAsync执行后流的指针会停在末尾,不重置会导致读取不到Excel数据 - 用
worksheet.Dimension?.Rows ?? 0:处理工作表为空的边界情况,避免空引用异常 - 通过循环遍历第一列的每一行:用
worksheet.Cells[row, 1]精准定位第一列的每个单元格 - 处理单元格空值:用
cellValue?.ToString() ?? string.Empty避免空引用异常,同时将空单元格转为空字符串
内容的提问来源于stack exchange,提问作者Neelima chunchu
相关产品推荐
相关产品推荐

