2017-01-11 4 views
0

열을 반복하고, 빈 셀 또는 특정 번호를 포함하는 셀을 찾을 때 해당 전체 행을 색칠하십시오.열을 반복하고 빈 셀이 발견되면 전체 행을 색칠 하시겠습니까?

내가 시도한 것은이 (및 이와 유사한 변형입니다), 작동하지 않습니다 :

xl.Range end = MySheet.Cells.SpecialCells(xl.XlCellType.xlCellTypeLastCell, Type.Missing); 
xl.Range start = MySheet.get_Range("Q2", end); 

if (start.Value == null) 
{ 
    start.EntireRow.Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red); 
} 

어떤 종류의 도움이나 좋은 아이디어를 주시면 감사하겠습니다.

+0

이 Excel VBA입니까? –

+0

셀을 통해 루프하려는 경우 루프 IE가 필요합니다. For Each, For 또는 while 문. – Sorceri

+0

@ D.O. 아니오, C# Interop - Excel –

답변

0

UPDATE :

이에 대한 해결책을 찾았 & foreach 문에 사용하는 경우

xl.Range first_range = MySheet.Cells.SpecialCells(xl.XlCellType.xlCellTypeLastCell, Type.Missing); 
     xl.Range usedRange = MySheet.get_Range("Q2", first_range); 
     xl.Range rows = usedRange.Rows; 

int count = 0; 
     foreach (xl.Range row in rows) 
     { 
      if (count > 0) 
      { 
       xl.Range firstcell = row.Cells[1];  
       string firstCellValue = firstcell.Value as string;  
       if (string.IsNullOrEmpty(firstCellValue)) 
       { 
        row.EntireRow.Interior.Color = System.Drawing.Color.Red; 
       } 
      } 
      count++; 
     } 
0

10000 행과 같은 빅 데이터와 루프 내가 얻을

"에서 OutOfMemory"예외

그래서 최상의 솔루션은 람다 식을 사용합니다

//best practice access cell by number not by string 

yourWorksheet.RangeUsed().Rows(r => string.IsNullOrWhiteSpace(r.Cell(1).Value.ToString())) 
         .ForEach(r => r.Style.Fill.SetBackgroundColor(XLColor.Red));