Instrukcja generowania raportów za pomocą...
Transcript of Instrukcja generowania raportów za pomocą...
Instrukcja generowania raportów za pomocą JasperReports
Raporty są zdefiniowane za pomocą pliku XML o rozszerzeniu jrxml. Następujące elementy są
zawarte w pliku:
<jasperReport> - główny element <title> - zawartośd jest drukowana tylko na początku raportu
<pageHeader> - nagłówek każdej ze stron
<detail> - zawiera treśd raportu <pageFooter> - stopka każdej ze stron <band> - definiuje sekcję raportu. Wszystkie powyższe elementy posiadają element band
jako jedyny element podrzędny
Wszystkie elementy poza jasperReport są opcjonalne. Przykładowy plik raportu:
W tym przykładzie pominięte zostały elementy pageHeader, pageFooter oraz title, dodany został natomiast element staticText, który generuje statyczny tekst na stronie.
Wszystkie pliki jrxml muszą zostad skompilowane zanim zostaną użyte do wygenerowania raportu. Przykładowy kod dokonujący kompilacji szablonu, wstawienia do niego danych i zapisujący go w strumieniu:
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="Simple_Report">
<detail>
<band height="20">
<staticText>
<reportElement x="180" y="0" width="200" height="20"/>
<text><![CDATA[Hello World!]]></text>
</staticText>
</band>
</detail>
</jasperReport>
Plik raportu musi zostad skompilowany jeden raz, lecz w tym prostym przykładzie kompilujemy go
przy każdym wywołaniu serwletu. Zanim raport zostanie wygenerowany, należy go wypełnid danymi
wywołując metodę fillReport(). Istnieje kilka wersji tej metody, używamy metody przyjmującej
trzy parametry: obiekt skompilowanego raportu, mapę parametrów przekazanych do raportu oraz
klasę implementującą interfejs JRDataSource.
Ponieważ nasz raport nie wymaga podania parametrów, przekazujemy pustą mapę jako drugi
parametr. Nie musimy również przekazad żadnych danych do raportu, dlatego tworzymy i
przekazujemy obiekt JREmptyDataSource.
Ostatnim krokiem jest wygenerowanie pliku PDF i wstawienie go do strumienia wychodzącego do
przeglądarki użytkownika.
Dalsze materiały
http://jasperforge.org/website/jasperreportswebsite/trunk/documentation.html?header=project&ta
rget=jasperreports – strona projektu JasperReports, sekcja dokumentacji
http://hocjava.files.wordpress.com/2008/06/a-tutorial-on-jasperreports-ireport-and-jfreechart.pdf -
wykorzystanie JasperReports wraz z iReport
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
JasperReport jasperReport;
JasperPrint jasperPrint;
try {
ServletOutputStream os = response.getOutputStream();
jasperReport = JasperCompileManager.compileReport(getClass()
.getResourceAsStream("/reports/jasperreports_demo.jrxml"));
jasperPrint = JasperFillManager.fillReport(jasperReport,
new HashMap(), new JREmptyDataSource());
JasperExportManager.exportReportToPdfStream(jasperPrint, os);
} catch (JRException e) {
e.printStackTrace();
}
}