Ich möchte eine dynamische Berichtsseite mit JSP erstellen. Grundsätzlich sollte es folgende Teile enthalten:
Anstatt alles selbst zu implementieren, möchte ich eine Java-Berichtsbibliothek verwenden. Daher habe ich meinen Bericht mithilfe von JasperReports erstellt. Die PDF-Ausgabe ist wirklich nett, aber der HTML-Export des Berichts ist nicht für meine Zwecke geeignet.
Der HTML-Export von JasperReport erstellt eine HTML-Datei mit viel fest verdrahtetem Code und ziemlich zufälligen Konfigurationsoptionen. Beispielsweise wird standardmäßig eine Tabelle mit weißem Hintergrund erstellt ( <table style="... bgcolor="white" ... ">
), die mit IS_WHITE_PAGE_BACKGROUND
Option, andererseits cellpadding="0" cellspacing="0" border="0"
sind im table
-Tag festverdrahtet. Es ist auch seltsam (und macht CSS-Styling schwierig), dass anstelle von span-Klassen die HTML-Datei <span style="font-family: sansserif; color: #000000; font-size: 10.0px;">
für alle meine Felder enthält.
Natürlich kann ich die HTML-Ausgabe mit JSP implementieren, aber das bedeutet, ich muss die Ausgabe zweimal entwerfen (einmal in jrxml für JasperReports, einmal in JSP), und ich muss Berichtsfunktionen neu implementieren (wie Zwischensummenberechnung, total) Berechnung, Gruppierung ...), die gegen das Prinzip DRY verstößt.
Was ist die beste Vorgehensweise, um dies zu implementieren? Ist es möglich, einen besseren HTML-Export mit JasperReports zu erstellen?
Es ist nicht einfach, die HTML-Ausgabe von JasperReports zu ändern. Hier ist ein altes Zitat auf warum:
... Dokumentformate wie HTML oder XLS, unterstützt keine absolute Positionierung von die Text- und Grafikelemente. Das Der Inhalt solcher Dokumente ist angeordnet in einer Raster- oder Tabellenstruktur. Von Natürlich mögen manche das absolut behaupten Positionierung von Elementen in HTML ist möglich dank CSS, aber du kannst es sein sicher, dass der CSS-Standard Funktionalität ist weit davon entfernt zu sein in allen Browsern oder das implementiert Das gleiche HTML-Dokument wird nicht angezeigt überall gleich.
Dies ist der Grund warum die ^ JasperReports eingebauten Exportprogramme, die HTML erzeugen, XLS- oder CSV-Dokumente verwenden ein spezielles Algorithmus, um die Elemente, die in einem bestimmten Dokument vorhanden sind Seite in einer Art Gitter. Wann Die Berichtsentwürfe sind sehr komplex oder agglomeriert, vom Absoluten übergehend Positionierung zum Raster- oder Tabellenlayout produziert sehr komplexe Tabellen mit vielen Unbenutzte Zeilen und Spalten, um es zu machen für den leeren Raum zwischen Elementen oder ihre spezielle Ausrichtung.
Wie bereits erwähnt, ist es alt, aber soweit ich das beurteilen kann, ist es immer noch korrekt.
Die Liste der Dinge, die Sie für den HTML-Exporter steuern können, ist sehr begrenzt:
%Vor%Ich habe mich von HTML abgewandt und verwende nur PDF, Excel und CSV, es sei denn, Kunden verlangen HTML. Wenn Sie HTML verwenden müssen, können Sie ein Stylesheet für die Arbeit mit Ihrer Site definieren und jQuery verwenden, um alle Inline-Stile zu entfernen, damit das Stylesheet übernimmt. Etwas wie:
%Vor%Tags und Links html java jsp reporting jasper-reports