Apache POI Zeilenfarbe

OliW

Aktives Mitglied
Einen schönen Sonntag euch allen,

ich hänge gerade mal wieder, wahrscheinlich an einer Kleinigkeit und komme nicht auf die Lösung.
Folgender Code, soll die Ausgabe eines JTables in eine Excel steuern.
In der Variablen hRow wird die jeweilige Reihe der Liste gespeichert.
Unter dem Kommentar // Liste werden die einzelnen Reihen erstellt. hRow wird bei jedem Schleifendurchlauf neu referenziert, da immer die nächste Reihe erstellt wird (i+1).
Das füllen der Liste funktioniert auch tadellos.

Bei der Bestimmung der Zeilenfarbe kommt es zum Problem.
Alle Zeilen werden bei der Ausgabe der Excel in der Fabre der letzten Zeile gefärbt.
Ist also der Status der letzten Zeile beispielsweise "Teillieferung", werden alle Zeilen der Tabelle rot eingefärbt.
Die Styles der anderen Zeilen werden also irgendwie überschrieben mit den Informationen aus der letzten Zeile.
Im Switch Statement sind alle break; Anweisungen gesetzt.

Das ist wie die Suche nach der Nadel im Heuhaufen :-(

Evtl. sieht ein erfahrenerer Kollege den Fehler sofort.

vielen Dank für eure Unterstützung

Code:
public static void writer (JTable table) throws  IOException {
  
    JFileChooser save = new JFileChooser();
    save.setDialogTitle("Save as...");
    save.setFileFilter(new FileNameExtensionFilter ("xlsx", "xls", "xlsm"));
    int choose = save.showSaveDialog(null);
  
    if (choose == JFileChooser.APPROVE_OPTION) {
      
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet sheet = workbook.createSheet ("Gartner Lagerliste");
        //try
        TableModel model = table.getModel();
        TableColumnModel column = table.getColumnModel();
        XSSFCellStyle style = workbook.createCellStyle();
      
        //Header
        XSSFRow row = sheet.createRow(0);
        XSSFRow hRow;
      
        for (int c=0; c<model.getColumnCount(); c++) {
            XSSFCell cell = row.createCell(c);
            cell.setCellValue(column.getColumn(c).getHeaderValue().toString());
      
        }
      
        //Liste
        for (int i=0; i<model.getRowCount(); i++) {
            hRow = sheet.createRow(i+1);
      
  
            // Zeile wird mit Daten gefüllt
            for (int j=0; j<model.getColumnCount(); j++) {
                XSSFCell cell = hRow.createCell(j, CellType.STRING);   
                cell.setCellValue(model.getValueAt(i, j).toString());
          
              
          
            }
          
            //Zeilenfarbe wird bestimmt
            String status = workbook.getSheetAt(0).getRow(i+1).getCell(11).toString();
              
            switch (status) {
            case  "Komplettlieferung" :
                style.setFillForegroundColor (IndexedColors.YELLOW.getIndex());
                style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
              
              
              
                break;
            case "Teillieferung" :
                style.setFillForegroundColor (IndexedColors.RED.getIndex());
                style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            
              
                break;
            case "nicht prüfbar" :
                style.setFillForegroundColor (IndexedColors.AQUA.getIndex());
                style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
            
                break;
            case "ausgeliefert" :
                style.setFillForegroundColor (IndexedColors.GREEN.getIndex());
                style.setFillPattern(FillPatternType.SOLID_FOREGROUND); 
                break;
              
          
            }
      
          
            for (int c=0; c<model.getColumnCount(); c++) {
                hRow.getCell(c).setCellStyle(style);
          
                }
        }
      
        FileOutputStream FOS = new FileOutputStream (save.getSelectedFile()+".xlsx");
        BufferedOutputStream bos = new BufferedOutputStream (FOS);
      
        workbook.write(bos);
        bos.close();
        FOS.close();
      
      
    }
 

mihe7

Top Contributor
Auf den ersten Blick würde ich sagen, dass Du für alle Zeilen das selbe CellStyle-Objekt verwendest und nur die Attribute veränderst. Am Ende verweisen dann alle Zellen auf das selbe Objekt, das die Attribute der letzten "Zeile" hat.

Kurz: erzeug mal mehrere Stile vorab und weise den passenden zu.
 

OliW

Aktives Mitglied
Auf den ersten Blick würde ich sagen, dass Du für alle Zeilen das selbe CellStyle-Objekt verwendest und nur die Attribute veränderst. Am Ende verweisen dann alle Zellen auf das selbe Objekt, das die Attribute der letzten "Zeile" hat.

Kurz: erzeug mal mehrere Stile vorab und weise den passenden zu.
Wieder mal kurz, präzise und erfolgreich. Vielen Dank.
An sich völlig logisch. Aber auch hier gilt ...."Manchmal sieht man den Wald ......"
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M FTP-Verbindung mit Apache Commons Net Java Basics - Anfänger-Themen 5
P apache.poi Java Basics - Anfänger-Themen 9
D Apache HTTPClient für alle Fälle Java Basics - Anfänger-Themen 41
P Apache Derby wird in Eclipse trotz Anbindung nicht gefunden Java Basics - Anfänger-Themen 6
P NoClassDefFoundError: org/apache/commons/collections4/ListValuedMap trotz vorhandener Klasse? Java Basics - Anfänger-Themen 10
P Maven-Dependencies (package org.apache.http.nio does not exist) Java Basics - Anfänger-Themen 6
M Java Einstellung von Apache POI für MS Word Erstellung mit Eclipse Java Basics - Anfänger-Themen 6
J Apache Poi - createCell() Methode akzeptiert keinen Index aus for-schleife als Parameter Java Basics - Anfänger-Themen 4
Bluedaishi Apache Tomcat 9 Java Basics - Anfänger-Themen 7
M Apache POI PPT - Vertikales Alignment von Text im XSLFAutoShape Java Basics - Anfänger-Themen 2
O Apache: Log-Settings werden nicht gezogen Java Basics - Anfänger-Themen 0
D Apache POI Tabelle wechseln Java Basics - Anfänger-Themen 2
E Apache Derby mit Eclipse Java Basics - Anfänger-Themen 2
K Apache POI Excel Letzte Reihe einer bestimmten Spalte Java Basics - Anfänger-Themen 1
O Problem mit optionalen Argumenten - Apache CLI - Java Basics - Anfänger-Themen 2
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
O POI Apache sheet scanner Java Basics - Anfänger-Themen 1
Joew0815 Error org.apache.xmlrpc.client.XmlRpcClientConfigImpl.setUserAgent Java Basics - Anfänger-Themen 2
S Wie bestehende Excel-Einträge mit neuen Vergleichen (mit Apache POI)? Java Basics - Anfänger-Themen 0
D Apache POI - XWPF - MS Word Java Basics - Anfänger-Themen 0
T Apache POI (Excel) - Probleme mit Zahlenformat Java Basics - Anfänger-Themen 2
U Apache Ant Java Basics - Anfänger-Themen 4
B Apache: jar-Datei Download als jar und nicht als zip Java Basics - Anfänger-Themen 4
D Import von import org.apache.commons.math3...... Java Basics - Anfänger-Themen 2
E apache-commons-net einbinden. Java Basics - Anfänger-Themen 18
Gossi Datentypen Probleme mit Apache Poi Java Basics - Anfänger-Themen 2
B org.apache.commons.... Folder in Projekt einfügen Java Basics - Anfänger-Themen 6
S org.apache.commons.net.* Java Basics - Anfänger-Themen 3
J Classpath Apache POI Java Basics - Anfänger-Themen 14
N Apache POI pptSlide erzeugen Java Basics - Anfänger-Themen 2
K apache poi - Spalten zählen Java Basics - Anfänger-Themen 4
G Apache POI Filter erstellen Java Basics - Anfänger-Themen 14
G Mit Apache POI Kopfzeilen definieren Java Basics - Anfänger-Themen 11
Strahlungsleck Datentypen Apache Poi & Excel Datumsformat Java Basics - Anfänger-Themen 4
D Apache Commons Telnet Java Basics - Anfänger-Themen 2
A Apache POI - HSSF vs. XSSF Problem Java Basics - Anfänger-Themen 4
K Apache Deby installieren? Java Basics - Anfänger-Themen 3
P "import" org.apache.xxxxxxx Java Basics - Anfänger-Themen 18
J Problem bei Apache ANT Java Basics - Anfänger-Themen 2
G http-Port beim Apache Tomcat ändern Java Basics - Anfänger-Themen 1
G org.apache.commons.httpclient Java Basics - Anfänger-Themen 3
G Apache Tomcat startet nicht da JAVA_HOME nicht definiert Java Basics - Anfänger-Themen 3
G Context Listener des Apache Tomcat verwenden Java Basics - Anfänger-Themen 4
alexpetri installation einer WAR datei auf apache Java Basics - Anfänger-Themen 3
G http-Request auf Apache Tomcat Java Basics - Anfänger-Themen 13
Y Problem mit org.apache.commons.httpclient Java Basics - Anfänger-Themen 3
E Apache jakarta fehler Java Basics - Anfänger-Themen 5
K MySQL-Connector auf Apache Java Basics - Anfänger-Themen 4
S HttpClient von apache benutzen? Java Basics - Anfänger-Themen 2
G StringUtils von jakarta.apache.org/commons/lang/api einbauen Java Basics - Anfänger-Themen 3
D Apache.Xerces unter Eclispe? import/plugin/package? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben