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

Mur*_*hy 14 c# asp.net io excel epplus

我搜索了它,发现链接C#EPPlus OpenXML计数行

int iRowCount = currentWorksheet.Dimension.End.Row - currentWorksheet.Dimension.Start.Row;
Run Code Online (Sandbox Code Playgroud)

但这给出了4721的值作为计数.它给出了整行计数,如何获得具有值的行的行数.像UsedRange这样的东西.

Dar*_*nMB 51

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

int iColCnt = Worksheet.Dimension.End.Column
int iRowCnt = Worksheet.Dimension.End.Row
Run Code Online (Sandbox Code Playgroud)

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

  • 根据我刚才的经验,Dimension.End.Row包含没有值的单元格.例如,如果用户创建的10,000个具有值的行的工作簿然后删除行的后半部分中的值而不删除整行,则Dimension.End.Row仍将返回10,000. (2认同)

Pet*_*esz 28

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

空单元格可以在这里使用的步骤被清除: 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;
}
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望在上面的示例中使用 string.IsNullOrWhiteSpace 而不是 string.IsNullOrEmpty 以避免包含带有多个空格或制表符的单元格的行被视为非空。 (2认同)