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

Linq操作Excel:如何正确获取符合条件的行号

搞定Excel行号筛选的问题!

嘿,你遇到的这个问题我之前也踩过坑——核心是你对x.Rows的理解有点偏差啦!这里的x是单个单元格对象(比如用EPPlus处理Excel时的ExcelRangeBase),x.Rows返回的是这个单元格所属的行范围对象,不是直接给你行号。当你把这个对象塞进列表时,它默认显示的是这个范围里的行数(单个单元格的行范围当然只有1行啦),所以你才会得到一堆1,而不是想要的1到12的行号。

给你修正后的代码

直接获取单元格的行索引就行,以常用的EPPlus库为例:

var selectedrows = range.Where(x => x.Text == domain.Name)
                        .Select(x => x.Start.Row) // 这才是单元格的实际行号
                        .ToList();

为啥这样就对了?

  • x.Start.Row:对于单个匹配的单元格来说,Start.Row就是它所在的真实行号;哪怕你选的是多单元格范围,也能拿到起始行号,完全适配你的场景。
  • 如果你用的是其他Excel处理库(比如NPOI),行号属性可能叫RowIndex,注意有些库的行号是从0开始计数的,要根据库的规则微调哦。

小技巧

不确定的话,可以先在筛选后加个打印验证:

foreach(var cell in range.Where(x => x.Text == domain.Name))
{
    Console.WriteLine(cell.Start.Row); // 先确认行号是不是你要的
}

确认没问题再把它放进列表里,就不会踩坑啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:39:52