Instrukcja generowania raportów za pomocą...

2
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>

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();

}

}