Это потому, что на самом деле это объект, созданный в памяти как копия функции; прототип действительно имеет смысл только в контексте создания экземпляра, поэтому после его создания нет логической конструкции для того, что это значит.
Другой способ сделать это.
var lastRow = sheet.Cells.Where(cell => !string.IsNullOrEmpty(cell.Value?.ToString() ?? string.Empty)).LastOrDefault().End.Row;