web-dev-qa-db-ja.com

EPPlus OpenXML行数を取得する方法(c#)

私はそれを検索し、リンクを見つけました C#EPPlus OpenXML count rows

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

しかし、これはカウントとして4721の値を与えます。行全体の数を示していますが、値のある行の行数を取得するにはどうすればよいですか。 UsedRangeのようなもの。

15
Murthy

シートのUsedRange(次元)の行数と列数を返す実際の回答は...

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

ただし、新しいワークシートまたは空のワークシートの場合、Dimensionプロパティがnullになるため、Worksheet.Dimensionがnullかどうかをテストする必要があります。

49
DarrenMB

ワークシートの空のセルにはまだフォーマットが含まれている可能性があり、シートの寸法でカウントされます。

空のセルは、次の手順でクリアできます: 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;
}
28
Peter Riesz

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-スニペット-1

1

それを行う別の方法。

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

0
Menelisi