如何获得EPPlus OpenXML行数(c#)

时间:2011-12-06 13:01:39

标签: c# asp.net excel io epplus

我搜索了它并找到了链接C# EPPlus OpenXML count rows

int iRowCount = currentWorksheet.Dimension.End.Row - currentWorksheet.Dimension.Start.Row;

但是这给出了4721的值作为计数。它给出了整行计数,如何获得具有值的行的行数。类似于UsedRange。

5 个答案:

答案 0 :(得分:48)

返回工作表的UsedRange(维度)的行数和列数的实际答案是......

int iColCnt = Worksheet.Dimension.End.Column
int iRowCnt = Worksheet.Dimension.End.Row

但是您需要测试Worksheet.Dimension是否为null,因为对于新工作表或空工作表,Dimension属性将为null。

答案 1 :(得分:27)

工作表中的空单元格可能仍包含格式,导致它们在工作表维度中计算:

可以使用以下步骤清除空单元格: http://office.microsoft.com/en-au/excel-help/locate-and-reset-the-last-cell-on-a-worksheet-HA010218871.aspx

我写了这个函数来获取包含文本的最后一行:

int GetLastUsedRow(ExcelWorksheet sheet) {
    var row = sheet.Dimension.End.Row;
    while(row >= 1) {
        var range = sheet.Cells[row, 1, row, sheet.Dimension.End.Column];
        if(range.Any(c => !string.IsNullOrEmpty(c.Text))) {
            break;
        }
        row--;
    }
    return row;
}

答案 2 :(得分:1)

有一种方法可以使用Where方法获取没有值的单元格。我们可以用它来从工作表或范围中找到最后一个单元格(在这种情况下是它的行)。

int lastRow = sheet.Cells.Where(cell => !cell.Value.ToString().Equals("")).Last().End.Row;

关于Where方法:https://msdn.microsoft.com/en-us/library/bb534803(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

答案 3 :(得分:0)

另一种方法。

var lastRow = sheet.Cells.Where(cell => !string.IsNullOrEmpty(cell.Value?.ToString() ?? string.Empty)).LastOrDefault().End.Row;

答案 4 :(得分:-36)

您可以按workBook.Worksheets.Count

获取点数