특정 인덱스의 Cell의 Value값을 하나하나 가져오면 속도가 굉장히 느립니다.

 

범위를 선택하고 범위에 해당하는 값들을 한번에 가져와야 속도가 빠릅니다.

 

Worksheet 클래스의 UsedRange(MSDN링크) 속성을 이용해 값을 가져오면 상단의 사용하지 않았던 범위는 놓쳐서

 

특정 인덱스에 접근하기 힘듭니다.

 

왼쪽 상단의 Cell부터 사용한 우측 하단의 Cell까지의 범위의 데이터를 가져와서 작업을 진행해야합니다.

 

 

 

/// <summary>

/// 해당 WorkSheet의 전체 데이터를 가져온다.

/// </summary>

/// <param name="sheet"></param>

/// <returns></returns>

private object[,] GetTotalValue(Worksheet sheet)

{

    //사용중인 범위(한번도 사용하지 않은 범위는 포함되지 않음)

    Range usedRange = sheet.UsedRange;

    //마지막 Cell

    Range lastCell = usedRange.SpecialCells(XlCellType.xlCellTypeLastCell);

           

    //전체 범위 (왼쪽 상단의 Cell부터 사용한 맨마지막 범위까지)

    Range totalRange = sheet.get_Range(sheet.get_Range("A1"), lastCell);

 

    return (object[,])totalRange.get_Value();

} 

 

+ Recent posts