2010-12-20 2 views
2

Excel 파일에서 읽는 콘솔 응용 프로그램을 만들었습니다. 모든 문서 번호를 가져 와서 검색 목적으로 배열에 넣고 싶습니다. "DocumentNumber"데이터가 포함 된 셀을 찾을 수 있습니다. $ F $ 5. F 열 내의 행을 반복하는 방법은 무엇입니까? 다음 코드를 가지고 있습니다 :C# Console을 통해 Excel 응용 프로그램에서 열을 반복하는 방법은 무엇입니까?

public static void Main(string[] args) 
    { 
     string address; 
     string next; 
     try 
     { 
      Excel.ApplicationClass excel = new Excel.ApplicationClass(); 
      Excel.Workbook workbook = excel.Workbooks.Open(@"D:\sample.xls", Missing.Value, Missing.Value, 
       Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
       Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, 
       Missing.Value, Missing.Value); 
      Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets["Sheet1"]; 
      Excel.Range docNumber = worksheet.Cells.Find("DocumentNumber", worksheet.Cells[1, 1], Excel.XlFindLookIn.xlValues, 
       Excel.XlLookAt.xlPart, Missing.Value, Excel.XlSearchDirection.xlNext, 
       false, Missing.Value, Missing.Value); 

      if(docNumber != null){ 
       address = docNumber.get_Address(true, true, Excel.XlReferenceStyle.xlA1, Missing.Value, Missing.Value); 
       Console.WriteLine(address); 

      } 
     } 
     catch (Exception err) 
     { 
      Console.WriteLine(err.Message); 
     } 
    } 

미리 감사드립니다.

+0

여기에 "missing.value"가 사용됩니다. –

답변

1

이 친절하게 각을 통해 this.It 반복하고 모든 행과 열을 들여다 참조하십시오.

string address; 
string next; 

try { 
    Excel.ApplicationClass excel = new Excel.ApplicationClass(); 
    object Missing = Type.Missing; 
    FileInfo fInfo = new FileInfo(@"D:\sample.xls"); 

    if(fInfo.Exists) { 
     Excel.Workbook workbook = excel.Workbooks.Open(@"D:\sample.xls", Missing, Missing, 
        Missing, Missing, Missing, Missing, Missing, 
        Missing, Missing, Missing, Missing, Missing, 
        Missing, Missing);  
     Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets["Sheet1"]; 
     Excel.Range docNumber = worksheet.Cells.Find("DDEC", worksheet.Cells[1, 1], 
     Excel.XlFindLookIn.xlValues, Excel.XlLookAt.xlPart, Missing, Excel.XlSearchDirection.xlNext, false, Missing, Missing);  

     if(docNumber != null) { 
      address = docNumber.get_Address(true, true, Excel.XlReferenceStyle.xlA1, Missing, Missing); 
      docNumber = worksheet.UsedRange;       

      for (int rCnt = 1; rCnt <= docNumber.Rows.Count; rCnt++) { 
       for (int cCnt = 1; cCnt <= docNumber.Columns.Count; cCnt++) { 
        string str = (string)(docNumber.Cells[rCnt, cCnt] as Excel.Range).Value2; 
        MessageBox.Show(str); 
       } 
      } 
      Console.WriteLine(address); 
     }  
    } 
} 
+0

안녕하세요. Rajesh, 방금 회신을 읽었습니다. 그리고 그것은 나를 위해 작동합니다. 감사. :) – janejanejane

1

OLEDB를 사용하여 데이터를 더 쉽게 읽을 수 없습니까? 클리너 구문을 사용하면 반환되는 DataTable을 foreach 할 수 있습니다.

+0

Hi Maw, 비즈니스 요구 사항이 변경되어 내 첫 번째 솔루션이 더 이상 작동하지 않습니다. 엑셀 파일에는 필자가 상상 한대로 열 머리글이 없습니다. 대신 헤더는 파일의 중간에 설정됩니다. 이 문제를 어떻게 해결할 수 있습니까? – janejanejane

+0

어떻게 할 수 있습니까? * [sheet1 $]에서 column = L? – janejanejane

+0

@janejanejane - 열 머리글은 파일 중간에 있습니다. ??? 그것은 일을 훨씬 어렵게 만들 것입니다. 기둥이 무엇인지 미리 아십니까? – MAW74656

관련 문제