2012-07-25 4 views
2

J'ai une feuille de calcul Excel qui a été créé avec ce code:C# Com Interop: Définir la couleur de fond de rang

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application(); 
Workbook wb = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet); 
Worksheet ws = (Worksheet)wb.Worksheets[1]; 

Je voudrais itérer sur les lignes et pour chaque ligne avec une certaine valeur dans la deuxième colonne Je voudrais changer la couleur de fond de cette rangée en rouge.

Un conseil est apprécié.

Cordialement.

+0

ont un 'Worksheets UsedRange' qui a une collection' rows' - ​​chaque 'Row' a une collection' Cells' - a 'Cell' a' value' et une propriété 'Interior.Color' qui prend une valeur RGB (Long). –

Répondre

0

code ci-dessous crée un fichier Excel, il remplit avec des valeurs aléatoires et que si la valeur dans une colonne de plus de 5, transformer la couleur de fond vert.

 Random rnd = new Random(); 

     Excel.Application xlApp = new Excel.Application(); 
     Excel.Workbook wb = xlApp.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); 
     Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1]; 

     // Set random data in A column 
     for (int i = 1; i < 10; i++) 
     { 
      ws.Range["A" + i, Type.Missing].Value = rnd.Next(10); 
      ws.Range["B" + i, Type.Missing].Value = rnd.Next(10); 
     } 

     // Set background if value in cell A more than 5 
     int rowNum = 0; 
     foreach (Excel.Range range in ws.Range["A1", "A10"]) 
     { 
      rowNum++; 

      if (range.Value > 5) 
      { 
       foreach (Excel.Range rowRange in ws.Range["A" + rowNum, "B" + rowNum]) 
       { 
        var colorScale = (Excel.ColorScale)rowRange.FormatConditions.AddColorScale(2); 
        colorScale.ColorScaleCriteria[2].FormatColor.Color = 0x0000FF00; 
       } 
      } 
     } 

     // Save and close file 
     wb.SaveAs("C:\\1234567890.xlsx"); 
     wb.Close(false, Type.Missing, Type.Missing); 
     xlApp.Quit();