source

EPLUS OpenXML 행 수를 가져오는 방법(c#)

manysource 2023. 6. 14. 21:56

EPLUS OpenXML 행 수를 가져오는 방법(c#)

검색해보니 링크 C#EPLus OpenXML 카운트 행이 있었습니다.

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

그러나 이것은 카운트 값으로 4721을 제공합니다.전체 행 수를 제공합니다. 값이 있는 행 수를 어떻게 얻을 수 있습니까?Used Range 같은 거.

시트의 사용된 범위(치수)의 행 및 열 수를 반환하는 실제 답변은 다음과 같습니다.

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

그러나 워크시트가 있는지 여부를 검정해야 합니다.새 워크시트 또는 빈 워크시트의 경우 치수 속성이 null이므로 치수가 null입니다.

또한 "공백"의 정의는 각 경우에 매우 구체적인 것이기 때문에 일반적인 기능을 갖는 것은 어려울 것입니다.가장 의미가 있는 유일한 방법은 모든 값이 비어 있다는 것입니다.하지만 Blank와 Nothing은 그 자체로 정말 다릅니다.(예: 셀에 설명이 있을 수 있으며 특정 사례에서 행이 공백으로 간주되지 않을 정도로 충분히 고려될 수 있습니다.

워크시트의 끝을 찾으려면 해당 스타일의 예로 Peter Reisz 답변을 참조하십시오.

워크시트의 빈 셀에는 여전히 형식이 포함되어 있어 치수 시트에서 셀 수 있습니다.

빈 셀은 다음 단계를 사용하여 지울 수 있습니다. http://office.microsoft.com/en-au/excel-help/locate-and-reset-the-last-cell-on-a-worksheet-HA010218871.aspx

텍스트가 포함된 마지막 행을 얻기 위해 이 함수를 작성했습니다.

int GetLastUsedRow(ExcelWorksheet sheet) {
  if (sheet.Dimension == null) {  return 0; } // In case of a blank 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;
}

또 다른 방법입니다.

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

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

언급URL : https://stackoverflow.com/questions/8400315/how-to-get-epplus-openxml-row-count-c