使用linq - Epplus返回值为非null的单元格

时间:2017-03-13 14:42:44

标签: c# excel linq epplus

我正在使用下面的Linq代码返回我行中最后一个填充的单元格。但是,我不知道返回什么原因(可能是某些格式化,或类似的东西)具有null值的单元格。实施例

我的行从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);

我做错了什么?

1 个答案:

答案 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)];