我正在使用下面的Linq代码返回我行中最后一个填充的单元格。但是,我不知道返回什么原因(可能是某些格式化,或类似的东西)具有null值的单元格。实施例
我的行从B16开始并转到AG16,论文中的代码应返回AG16,但这是返回AI16,此单元格为空白,没有值,公式,没有。
我想忽略具有空值的单元格,以便返回AG16。
我正在按照下面的代码进行操作,即使它没有值
也会返回AI16var lastRowCellValue = worksheet.Cells.Last(c => c.End.Row == 16)
我已经尝试使用下面的代码,但它返回NULL而不是AG16,这是我的最后一个值单元格
var lastRowCellValue = worksheet.Cells.Last(c => c.End.Row == 16).Where(c => c.Value != null);
我做错了什么?
答案 0 :(得分:3)
假设问题类似于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)];