Excel-Sheets erzeugen aus Report

parabool

Bekanntes Mitglied
Hallo,

Per JasperReports habe ich einen Bericht generiert (1 PDF-Datei) , bestehend aus Inhaltsverzeichnis,Teil1, Teil2, ... usw.

Eine Excel-Version wird auch erzeugt - klappt auch soweit.

Die einzelnen Teile (Inhaltsverzeichnis, Teil1...) die aus mehreren Seiten bestehen können,
sollen im Excel-Dokument je ein Sheet bilden. Also wären z.B. in einer Excel-Datei dann
4 Sheets/Tabellen = Inhaltsverz, Teil1, Teil2 und Teil3 enthalten.

Bisher habe ich jedoch in JasperReports nur die Möglichkeit gefunden 1 Sheet pro Seite (IS_ONE_PAGE_PER_SHEET" = true) oder Alle Seiten in einem Sheet (false) darzustellen.

Frage: kann man das genauer steuern ? Also z.B. Seite 1-4 im 1. Sheet 5-7 im 2.Sheet usw
(habe in der Api nichts gefunden)

Weitere Möglichkeiz wäre Apache Poi. Habe mir gedacht, die Einzelnen Reportteile als xls zu speichern
und dann per Apache Poi in einer Excel-Datei mit einen Sheet pro Datei zudsammenzufügen.
Die einzige Möglichkeit die ich da gefunden habe wäre , eine leere xls mit 4 Sheets anzulegen und diese
dann mit den generieten xsl Zeile für Zeile und Zelle für Zelle zu füllen.

WEerscheint mir aber umständlich.
Vielleicht gibt es noch einen Anderen Weg ?

Danke und VG
 
Da die größe bzw. Zeichenanzahl pro Zeile egal ist, kann du theoretisch eine Seite pro Zelle nehmen. Andererseits könntest du deinen Bericht auch einfach pro Zeile auslesen und dann Zeilenweise in eine Exceltabelle eintragen.
 
hey, danke für die Antwort.

ich habe jetzt doch noch eine Lösung in JasperReports gefunden:
Im einem JasperPrint - Objekt ist der Report enthalten der dann in unterschiedlichen Formaten exportiert werden kann.
Bisher hatte ich den Export in Excel so:

Java:
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT, this.jasperPrint);
...
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
exporterXLS.exportReport();

Es ist aber auch möglich , eine Liste von JasperPrint-Objekten zu übergeben, die dann zu den jeweiligen Sheets werden:

Java:
List<JasperPrint> list = new ArrayList<JasperPrint>();
list.add(jasperPrintTeil1);
list.add(jasperPrintTeil2);

für den PDF- Export füge ich die einzeln generierten Teile (jasperPrintTeil1,jasperPrintTeil2 usw.) zu einem JasperPrint-Objekt zusammen (jasperPrintGesamt). Beim Excel-Export übergebe ich sie als Liste:

Java:
exporterXLS.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST,list);
exporterXLS.setParameter(JRXlsExporterParameter.SHEET_NAMES,new String[{"Teil1","Teil2"});//Optional
exporterXLS.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
...
exporterXLS.exportReport();

warum hab' ich das nicht gleich gesehen ;-/
 
Zuletzt bearbeitet:

Zurück
Oben