2017-05-10 5 views
0

Ich muss ein vorhandenes Excel öffnen und einige Werte einstellen oder die Hintergrund-/Vordergrundfarbe an diesen Zellen ändern.Apache POI, ändern Hintergrundfarbe tut in der falschen Zelle

Dieses Excel ist über die Arbeitstage in einem Unternehmen, so habe ich ein Excel bereits gestylt. Ich muss den Vordergrund bei einigen Zellen ändern, weil, wie Sie sich vorstellen können, wir in einigen Tagen nicht arbeiten.

Also, für jeden Tag (der einer Zelle entspricht), wenn es nicht "aktiviert" ist, muss es gelb werden.

Mein Code ist:

for(int i=0;i<listDays.size();i++) { 

      int indiceColonna = 6+i; 

      /* Setto la cella GIALLA relativa alla desc corta giorno */ 
      if(!listDays.get(i).isEnabled()) { 
       CellStyle cellaGialla = foglio.getRow(5).getCell(indiceColonna).getCellStyle(); 
       cellaGialla.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex()); 
       cellaGialla.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
       foglio.getRow(5).getCell(indiceColonna).setCellStyle(cellaGialla); 

      /* Colonne gialle : da G8 a G18 - a scendere */ 
       for (int y = 0; y < 11; y++) { 
        Cell cella = foglio.getRow(7 + y).getCell(6 + i); 
        CellStyle cella2Gialla = cella.getCellStyle(); 
        cella2Gialla.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex()); 
        cella2Gialla.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
        cella.setCellStyle(cella2Gialla); 
       } 
      } 

     } 

ich den tatsächlichen Cellstyle der Zelle nehmen will und nur die Vordergrundfarbe ändern. Dieser Code funktioniert teilweise, weil die Vordergrundfarbe auch auf andere Spalten eingestellt wird:

Wie kann ich diesen Fehler vermeiden? Ich benutze Apache POI 3.16, aber ich habe mit einigen älteren Versionen versucht.

Vielen Dank!

+1

Erstellen Sie einen neuen Zellenstil, stylen und anwenden? Zellenstile sind in Excel definierte Arbeitsmappe – Gagravarr

Antwort

1

Ich war auch mit einem ähnlichen Problem konfrontiert und fand die Lösung, einen neuen Stil für das Arbeitsbuch zu erstellen, wie von Gagravarr erwähnt. Ändern Sie einfach Ihren Code wie folgt.

CellStyle cella2Gialla = WorkbookObject.createCellStyle();