如何用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
相关产品推荐
相关产品推荐

