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

如何用EPPlus和Linq动态获取Excel目标单元格右侧的值?

动态获取目标单元格右侧相邻值的EPPlus实现

你当前代码的问题在于硬编码了列索引10,一旦目标单元格所在列发生变化,就无法正确定位右侧相邻单元格。解决思路是基于找到的目标单元格自身的列索引,动态计算右侧相邻列的位置——也就是用目标单元格的列号加1,行号保持和目标单元格一致。

修改后的代码如下:

using (var package = new ExcelPackage(f.FullName))
{
    var worksheet = package.Workbook.Worksheets[0];
    var montantArriere = from cell in worksheet.Cells["G:L"]
        where cell.Value?.ToString() == "Total Arriéré" 
        // 用目标单元格的行号 + 列号+1 定位右侧相邻单元格
        select worksheet.Cells[cell.Start.Row, cell.Start.Column + 1].Value;
}

关键改动说明

  • cell.Start.Column + 1:直接获取目标单元格右侧相邻列的索引,完全不受目标列位置变化的影响
  • cell.Start.Row:保持和目标单元格相同的行号,确保定位到同一行的右侧单元格

如果需要处理多个匹配到的单元格,或者要避免目标单元格位于工作表最后一列时的越界问题,可以添加额外判断逻辑:

using (var package = new ExcelPackage(f.FullName))
{
    var worksheet = package.Workbook.Worksheets[0];
    var montantArriere = from cell in worksheet.Cells["G:L"]
        where cell.Value?.ToString() == "Total Arriéré" 
        // 先判断是否存在右侧列,避免越界异常
        let rightColumn = cell.Start.Column + 1
        where rightColumn <= worksheet.Dimension.End.Column
        select worksheet.Cells[cell.Start.Row, rightColumn].Value;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:27:39