Performantes Erstellen von Excel-Dateien

stg

Top Contributor
Hallo zusammen,

ich stolpere gerade über einen Excel-Export, den ich für meinen Kunden erstellen soll.

Bisher habe ich so etwas mit Apache POI realisiert und bin ich recht gut damit gefahren. Dieser eine ist jedoch in sofern "anders", da er recht umfangreich ist und es sehr genau Vorgaben hinsichtlich Styling usw gibt. Der Report umfasst mehrere Worksheets, mehrere Tabellen, die je nach Content unterschiedlich dimensioniert und formatiert sind usw..

Das Erstellen des Reports funktioniert prinzipiell und ist auch im mittleren dreistelligen Millisekunden-Bereich erledigt, was hinreichend ist. Das abschließende Schreiben (workbook.write()) in den OutputStream dauert jedoch recht lange (30-40 Sekunden), was für den Kunden nicht hinnehmbar ist. Angestrebt wird eine Antwortzeit von <5 Sekunden.

Hat jemand Erfahrung im Erstellen von komplexeren Reports mit Apache POI und weiß, wo möglicherweise Optimierungspotential besteht?
Kennt jemand andere APIs, die möglicherweise deutlich besser performen? Hinsichtlich Programmiersprache bin ich relativ frei, auch wenn das ganze letzten Endes in eine bestehende Java EE WebAnwendung integriert werden muss, aber da finden sich schon Mittel und Wege.

Aufgrund der Vielzahl an Möglichkeiten wollte ich einfach mal euch fragen, was eure Erfahrungen sind. Was könnt ihr empfehlen?
 

Thallius

Top Contributor
Wäre wichtig zu wissen was die API alles können muss. Brauchst du auch Verlinkungen, Formeln, Filter etc oder wirklich einfach nur Daten in das Sheet?

Gruß

Claus
 

stg

Top Contributor
auf der Seite https://poi.apache.org/spreadsheet/index.html ist unten eine Tabelle.
Vielleicht ist ja SXSSF (Streaming Usermodel API) noch eine alternative?

Das scheint beim Aufruf von #Workbook.write() selbst keinen (oder kaum einen) Unterschied zu machen. Das Arbeiten auf dem Workbook Objekt ist ja auch schnell genug, nur das abschließende Schreiben ist sehr langsam.

Wäre wichtig zu wissen was die API alles können muss. Brauchst du auch Verlinkungen, Formeln, Filter etc oder wirklich einfach nur Daten in das Sheet?

Ich brauche im konkretren Fall zwingend:
- Formatierungen (Farben, Schriftgröße, Borders, Merging von Zellen, Text-Wrapping, ...)
- Filter
(Worksheet-übergreifende) Formeln wären schön, sind aber kein Muss. Gleiches gilt für bedingte Formatierungen.
 

Ähnliche Java Themen


Oben