2011-02-08 3 views
2

Excel 파일을 읽고 메모리에 정보를 저장 한 다음 해당 정보에 대한 계산을 수행 할 수있는 프로그램을 C#로 만들려고합니다.C#을 사용하여 Excel에서 테이블 경계 찾기

지금 당장은 행과 열의 수를 하드 코딩하고 있지만 정보를 읽을 수 있습니다. 문제는 2 x 2 테이블과 500 x 300 테이블의 다른 Excel 시트로 구성된 Excel 시트를 얻을 수 있다는 것입니다. "날짜"열과 머리글 열의 첫 번째 NULL 셀을 찾아서 테이블의 경계를 확인하는 메서드를 만들려고합니다.

Convert.ToString ((object) dateCol) == ""처럼 보이는 첫 번째 NULL 셀을 찾으려면 약간의 코드가 있습니다. 불행히도 (if 문에서) 비트의 코드는 NULL이든 아니든간에 모든 셀을 대상으로하는 것으로 보입니다. 직선 비교 (if (dateCol == null))를 시도하면 동일한 문제가 발생합니다.

덕분에, 제시

+0

Excel 파일을 읽고 처리하는 데 사용하는 툴킷/라이브러리는 무엇입니까? 귀하의 질문에 무엇을 제안해야하는지에 대한 정보가 충분하지 않습니다. interop을 사용하는 경우 시트 객체에 .Rows.Count/.Columns.Count를 사용하면됩니다. –

답변

0

나는 작업을 얻었다. 다음은 호기심 많은 사람들을위한 코드입니다.

public static void findingTableBounds() 
    { 
     for (int column = 1; column < currentRow; column++) 
     { 
      double? dateCol; 
      dateCol = ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2; 
      if (dateCol == null) 
      { 
       Console.WriteLine("Total Row: {0}", totalRow); 
       currentRow = 2;   
      } 
      else 
      { 
       currentRow++; 
       totalRow++; 
      } 
     } 


     for (int row = 1; row < currentCol; row++) 
     { 
      double? headerRow; 
      headerRow = ((Excel.Range)workSheet.Cells[1, currentCol]).Value2; 
      if (headerRow == null) 
      { 
       Console.WriteLine("Total Column: {0}", totalCol); 
       currentCol = 2; 
      } 
      else 
      { 
       currentCol++; 
       totalCol++; 
      } 
     } 
    } 

참고는 I는 2 CurrentRow와 동일 currentCol했다 그래서 I의 치수를 발견하면 테이블에서 값을 읽기 시작할 수있다. 그렇게하는 것이 전적으로 필요하지는 않지만 다른 변수를 쉽게 사용할 수 있지만 나중에이 변수를 사용하기로 결정했습니다.

업데이트 다른 코더의 도움으로 VB의 코드가 자동으로 테이블의 마지막 행을 찾습니다. 코드는 다음과 같습니다 : 이것에 대한 VB에서 방법이 얼마나보고

Dim totalRow As Integer 

totalRow = Range("A1").End(xlDown).Row 

, 그것은 같은 일을 할 수있는 C#에서 방법이있을 수 있습니다처럼 느끼게 ... 나는 단지 그들이 무엇인지 모르겠어요 . 어쨌든 "End"메서드는 왼쪽, 위 및 오른쪽 경계를 찾는 데에도 사용할 수 있습니다. Row 메서드는 Excel의 커서가 현재 행을 추출하는 것처럼 보입니다. 여기서는 커서가 Excel의 마지막 행으로 이동합니다. 끝 방법)

제시

관련 문제