# Apache POI HSSF - Farbe/Rahmen etc. ohne Style-Vorlage?



## Hans_Maulwurf (26. Jun 2012)

Mahlzeit 

bin ziemlich neu hier und in der Java-Welt. Nichtsdestotrotz versuche ich mich an einem kleinen Projekt mittels der Apache POI.

Ausgangslage: Ich habe in einem Ordner ein paar txt-Dateien, welche ich auslese und am Ende für jede txt-Datei ein zweidimensionales Array habe, quasi eine Matrix/Tabelle. Diese möchte ich nun in einer xls-Datei ausgeben. Deshalb auch HSSF 

Alles schön und gut, unformatiert klappt auch alles super. Aber wenn ich meine xls dynamisch(!) formatieren will, komm ich nicht weiter. Die Formatierung ist abhängig von den Zellinhalten, es sind quasi _kleine Formatierungsschlüssel_ in den Zelltexten eingebaut, welche ich auslesen möchte, aus dem String entfernen und anwenden möchte. Es kann aber auch sein, dass eine ganze Zeile/Spalte z.B. fett gemacht werden muss und zusätzlich eine Zelle davon noch rot.

Das Problem ist ja aber, dass ich bei HSSF vorher die Styles festlegen muss, _createCellStyle()_, um der Zelle dann den kompletten HSSFStyle zu übergeben, oder? Ich wünsche mir eigentlich "nur" einen Weg ala _setColor(indexRow, indexColumn, Farbe)_ und genauso Rahmen, Ausrichtung etc.
Eventuell gibts sowas wie _getCellStyle()_, denn ich dann jeweils ändern kann und wieder an die Zelle übergebe?
Ich hoffe Ihr versteht mein Dilemma 

mfg Hans


----------



## SlaterB (26. Jun 2012)

getCellStyle() als Methode gibt es, schon ausprobiert?
wenn du Pech im Glück hast gehen die Änderungen, aber ist dieses Style-Objekt aber auch anderen Zellen zugewiesen die mitgeändert werden,

was spricht gegen jeweils neues CellStyle-Objekt und darin gesetzten Eigenschaften?
eine Zeile mehr macht doch nicht so viel aus,

sparsam wäre, die CellStyles für bestimmte Key-Kombinationen zu speichern, später wiederzufinden und wiederzuverwerten,
wenn aber etwa der Suchstring "farbe" + farbe+"kursiv"+boolean zusammengesetzt werden muss, kann das für sich praktisch
genauso teuer sein wie ein neues kleines CellStyle-Objekt


----------



## Hans_Maulwurf (26. Jun 2012)

oh das gibts ja wirklich, im QuickGuide hab ich nichts gefunden, deswegen dacht ich, sowas gäbs nicht. Ich probiers gleich mal aus.

Naja ich dachte die Anzahl der CellStyles ist begrenzt?


----------



## SlaterB (26. Jun 2012)

von Begrenzung wußte ich bisher nichts, das wäre natürlich zu berücksichtigen, etwa dann doch mit gecachten Styles


----------



## Hans_Maulwurf (26. Jun 2012)

Also danke erstmal für den Hinweis, getCellStyle funktioniert soweit, aber wie du schon vermutet hast, hängen andere Zellen ebenfalls mit einem CellStyle zusammen und werden ebenfalls verändert.
Ich teste mal, ob es bei der Anzahl der Styles eine Begrenzung gibt, jedenfalls gibt es die bei den Fonts und unter Python (xlwt) gabs die auch.

Ok, also es gibt eine Begrenzung:

```
Exception in thread "main" java.lang.IllegalStateException: The maximum number of cell styles was exceeded. You can define up to 4000 styles in a .xls workbook
```

Wenn ich für jede Zelle einen CellStyle erzeugen will, werde ich diese Grenze definitiv überschreiten.

Gibts irgendwo CodeSnippets, aus denen ich mir ein solches Kostrukt bauen kann, das mir aus vielen einzelnen Formatierungsteilen jeweils ganze CellStyles basteln kann? Also das was du meintest mit den Keys?


----------

