我使用下面的 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);
我做错了什么?
最佳答案
假设问题类似于this ,由于空单元格或格式导致问题,您可以使用从 this answer 派生的函数:
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)];
关于c# - 使用 linq 返回值不为空的单元格 - Epplus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42766435/