zodiac2k's Blog

Apache POI Stolpersteine

Programmierung > Java > Apache POI

In den letzten Wochen habe ich beruflich viel mit Apache POI gearbeitet und dabei sind mir einige Stolpersteine aufgefallen. Da die Informationen im Web doch recht dünn sind, schreibe ich diese Probleme mal zusammen:

Excel-Sheets mit Graphen

Excel-Sheets mit Graphen können zwar bearbeitet werden, so dass der Graph mit neuen Werten dargestellt wird, aber man kann mit Apache-POI  keine Sheets klonen und kopieren, die Graphen enthalten.

Excel-Sheet Namen Limit

Excel hat ein internes Limit, dass Sheet-Namen auf 31 Zeichen begrenzt sind.

Excel-Formeln und Löschen von Sheets

Wenn man mit Apache-POI Formeln (Cell.setCellFormula()) mit Referenzen auf andere Sheets bearbeitet und danach Sheets löscht (bsp. XSSFWorkbook.removeSheetAt()), die vor dem referenzierten Sheet liegen, geht die Referenz verloren.

Es sieht so aus, als würde die Formel eine Referenz auf die Sheet-ID speichern statt auf dem Namen und diese dann nach dem Delete nicht aktualisieren.

Farbliche Gestaltung von HSSF (Excel 2003 Format)

Hintergrundfarben für Cells setzen ist für das Excel2003 Format sehr kompex, da diese Office Version nur eine begrenzte Farbpalette hat. Jede Farbe muss zuvor registriert werden, dafür müssen ggf. verwendete Standardfarben überschrieben werden.

Desweiteren können Excel2003 Templates Farben enthalten, die später im daraus generierten Excel-Dokument nicht übernommen werden, da sie nicht auf der Farbpalette registriert sind. Diese werden dann durch eine ähnliche Farbe auf der Farbpalette ersetzt.

Farbliche Gestaltung von XSSF (Excel-2007 Format)

Mit Excel 2007/2010 hat man keinen direkten Zugriff auf dies Farbpalette, die Excel 2003 verwendet. Somit können gewisse Farben nur hardkodiert via POI gesetzt werden, indem sie vorher auf der Farbpalette eingetragen wurden.


Verfasst am 22.05.2015