使用linq – Epplus返回值不为空的单元格

我使用下面的Linq代码来返回我行中最后一个填充的单元格。 但是,我不知道是什么原因(也许一些格式化,或类的东西)与空值的单元格被返回。 例

我的行从B16开始到AG16,论文中的代码应该返回AG16,但这是返回AI16,这个单元格是空白的,没有任何值,公式,什么都没有。

我想用空白值忽略单元格,所以返回AG16。

我正在根据下面的代码,即使它没有价值返回AI16

var lastRowCellValue = worksheet.Cells.Last(c => c.End.Row == 16) 
  • 他将检查16行

我已经尝试使用下面的代码,但它返回NULL而不是AG16,这是我最后一个值单元格

  var lastRowCellValue = worksheet.Cells.Last(c => c.End.Row == 16).Where(c => c.Value != null); 

我究竟做错了什么?

假设问题与此类似,使用空单元格或导致问题的格式化,可以使用从此答案派生的函数:

 int LastColumnByRow(ExcelWorksheet sheet, int rownum) { var col = sheet.Dimension.End.Column; while (col >= 1) { if (!string.IsNullOrEmpty(sheet.Cells[rownum, col].Text)) { break; } col--; } return col; } 

这样调用:

 var lastRowCellValue = worksheet.Cells[16, LastColumnByRow(ws, 16)];