2013-08-05 1 views
2

Excel 시트의 특정 열을 가져온 다음 셀을 반복합니다.C# Excel에서 반복 처리하는 방법

Excel.Workbook workbook = app.Workbooks.Open(svDropPath); 
Excel.Worksheet xlWorkSheet = (Excel.Worksheet)workbook.Sheets["Sheet Name"]; 
var col = xlWorkSheet.UsedRange.Columns["C:C", Type.Missing]; // I want the 3rd column 
foreach(Cell c in col) 
.... 

가 어떻게 실제로 foreach 루프를해야합니까 : 나는 이런 식으로 뭔가를보고 싶어?

+0

위의 코드가 구문 상 올바른가요? –

+0

foreach가 아닙니다. 그게 정확히 내 질문입니다. 어떻게하면 특정 열의 셀을 반복합니까? (제 경우에는 제 3 열을 원합니다) –

답변

6

귀하의 루프의 뜻은 다음과 같습니다

foreach (Excel.Range item in col.Cells) 
    { 
     //whatever you want to do with your cells, here- msgbox of cells value 
     MessageBox.Show(Convert.ToString(item.Value)); 
    } 
+1

당신이 나보다 빠릅니다 :) 여기 당신이 놓친 것이 있습니다 : Excel.Range col = (Excel.Range) xlWorkSheet.Columns [ "C : C", Type.Missing]; – varocarbas

+1

OP로'var col = ...'로 쓸 필요는 없습니다. –

+0

더 명확하게하기. 이 코드가 전혀 캐스팅하지 않아도 작동하는지 확실하지 않습니다. – varocarbas

3

나는 문제의 인덱스를 통해 루프보다가 다른 일을 더 좋은 방법은 없습니다 믿고 중 하나를 셀 또는 행 사용

for (int i = 1; i <= max; i++) 
{ 
    Range cell = col.Cells[i, 1]; 
    // or 
    Range cell = col.Rows[i]; 
} 

그러나 모든 셀을 읽고 쓰는 경우 전체 배열을 개체 배열에 읽고 쓰는 것이 훨씬 더 낫고 배열 항목을 반복 할 때 내 대답 https://stackoverflow.com/a/18058144/1737957에 설명 된대로 더 유용합니다. . 이 방법이 훨씬 빠를뿐만 아니라 이제는 간단한 C# 배열을 처리하기 때문에 더 멋진 언어 구문을 사용하여 반복 할 수 있습니다.

AFAIK를 반복하는 대신 루프를 사용해야하는 유일한 이유는 셀 내용이 아닌 조건부 형식 등을 액세스하는 경우이며 한 문장에서 전체 범위를 쓸 수 없다는 것입니다. 그러나 배열을 사용하여 이러한 작업을 수행하는 방법이있을 수도 있습니다.

관련 문제