JasperReports - nástroj pro generování dynamických reportů.

Software JasperReports - nástroj pro generování dynamických reportů.

Stručně o JasperReports

JasperReports je nástroj (knihovna), který umí generovat dokumenty ve různých formátech (PDF, DOCX, ODT, HTML, XML, CSV, XLS, RTF, TXT). K dnešnímu dni je ve verzi 6.2.2. Stahovat můžete z oficiálních stránek. Design, datové připojení, práce s daty pro dokument jsou definovány ve značkovacím jazyce XML. XML soubor, s definicí dokumentu, má koncovku jrxml. Ten je nutné zkompilovat, poté vznikne soubor s koncovkou jasper, se kterým už je možné pracovat pomocí kódu naší aplikace.

Výroba šablony pro dokument

Pro návrh reportu je možné použít bezplatný editor iReport Designer, který je k dispozici ve verzi 5.6.0. V budoucích článcích se podíváme i na následníka - Jaspersoft Studio. Pro začátek je ale jednodušší začít s iReport.

Velká výhoda je vkládání tzv. subreportů. Pokud máme dokumenty, kde se určité části opakují, lze vytvořit samostatnou šablonu takové části, a tu pak i opakovaně vložit do šablony jiné. Výsledný dokument je pak "seskládaný" z různých šablon dokumentů.

Šablona má několik oddílů, kde si můžeme nadefinovat vzhled dokumentu, hlavičku, patičku, patičku pouze pro poslední stranu, tělo dokumentu (umí i sloupcový design) atd. Základním stavebním kamenem je QUERY do databáze, to nám automaticky vygeneruje sloupce, které dotaz vrací i s jejich datovým typem (lze přetypovat). Ty jsou uloženy v kolekci FIELDS. Nad těmito daty, definovat operace (SUM, MAX, MIN, atd.), provádět jejich seskupování, podmíněné zobrazovaní, atd. Prostě v podstatě jsem za rok používání nenarazil na případ, kdy by se něco nedalo zobrazit tak, jak zákazník potřeboval :)

Každá šablona dále obsahuje kolekci PARAMETERS, některé jsou implementovány trvale, další si můžeme přidat vlastní, a ty použít jako vstupní data a přes ně potom ovládat generování reportu externí aplikací. Parametry můžeme plnit i pro vnořené subreporty přímo z kolekce fields, nebo z kódu. Nebo si do nich ukládat data, která jsou shodná pro všechny části dokumentu (například nadpis do hlavičky).

Pomocí iReportu nadesignujete váš dokument, připojíte datasource a můžete testovat výstup pomocí zabudovaných prohlížečů konkrétního požadovaného formátu výstupu. Kompilace proběhne automaticky před zobrazením výsledku.

Dokumenty mají pro snazší práci předpřipravené ovládací prvky, pomocí kterých designujeme jednotlivé části dokumentu. Lze použít např.: statický text, textové pole, obrázek, graf, tabulka, html, frame, čárový kód a další a další.

Na co si dát pozor!

V případě, že budeme jako výstupní formát používat PDF, je nutné definovat u každého ovládacího prvku (statický text, textové pole atd.) znakovou sadu. Standardně je nastavená na 1252, proto se v PDF nekorektně zobrazí české znaky. Musíme tedy nastavit znakovou sadu 1250.

Co budeme potřebovat pro tisk sestavy z naší aplikace?

Nejprve si musíme stáhnout knihovny JasperReports. Stahovat můžete buď jednotlivé knihovny, nebo rovnou ZIP soubor, ve kterém jsou všechny pohromadě. Dále musíme zvolit vhodný vstupní DataSource může to být JDBC databáze, XML soubor, Excel, JSON, CSV a další z mnoha předdefinovaných, případně si můžeme nadefinovat vlastní.

Návod na vytvoření prvního jednoduchého reportu

Nejprve si musíme připojit nějaký zdroj vstupních dat. Klikněte na ikonku Report Datasources. img ikona datový zdroj

Otevře se Vám okno se seznamem Vašich zdrojů dat. Klikneme na tlačítko New a vybereme druh připojení do zdroje. Já pro demonstraci zvolím Database JDBC Connections a pokračujeme standardně tlačítkem Next.

Vyplníme parametry připojení (každý to má samozřejmě jinak podle zvolené databáze, já jako databázi používám Oracle)
okno definice db

Můžeme otestovat tlačítkem TEST, a pokračujeme uložením datového zdroje tlačítkem SAVE. Zaškrtneme tento datový zdroj jako výchozí pro všechny naše reporty (dá se měnit za běhu). Tím máme vytvořené připojení do zdroje dat. A můžeme vytvořit náš první jednoduchý report.

Naše databáze pro první report je velice jednoduchá, obsahuje pouze dvě tabulky, kdy jedna obsahuje data o uživatelích, druhá je číselník měst. Pro demonstraci základního reportu nic složitého není třeba vytvářet.

První tabulka má název:XTUSR a obsahuje tyto sloupce:

Jméno sloupce Popis Datový typ
idusr identifikátor uživatele number
mestoid cizí klíč do tabulky XTMESTO number
jmeno jméno a příjmení uživatele text (varchar2)

Druhá tabulka má název:XTMESTO a obsahuje tyto sloupce:

Jméno sloupce Popis Datový typ
id identifikátor města number
nazev název města text (varchar2)

Do databáze jsem předvyplnil tři města a pět uživatelů. Tím máme připravený zdroj dat a můžeme se směle pokusit vytvořit náš první report.

V nabídce vybereme Soubor a Nový (File/New).

Otevře se nám nabídka, ve které vše ponecháme jak je (je předvybrán report a šablona Blank A4). A pokračujeme tlačítkem Open this template. Otevře se nám okno ve kterém si náš report pojmenujeme a zvolíme adresář, do kterého se nám budou reporty ukládat. Pokračujeme tlačítkem Next.A po informaci že je vše OK tlačítkem Finish.

Na pravé straně editoru je Okno Report Inspektor v něm máme seznam všech "objektů" našeho reportu ve formě treeview (stromu). Klikneme pravým tlačítkem myši na 1 element tohoto stromu (je to název našeho reportu) a z vyskakovací nabídky vybereme Edit Query. Sem umístíme SQL dotaz do připravené databáze.

Já zvolil jednoduchý dotaz:

select idusr, jmeno, nazev from XTUSR u,XTMESTO m where u.mestoid=m.id order by m.nazev

Klikneme na Read Fields (to nám načte slopce výsledku provedení dotazu). A okno s dotazem zavřeme tlačítkem OK. Vidíme že ve "stromu" reportu nám pod položkou Fields přibyly všechny sloupce dotazu. Metodou Drag and Drop přetáhneme jednotlivé položky do reportu na pozici detail (více obrázek)

rep 01

Pokud si teď dáme Preview (CTRL+ALT+PageDown, nebo kliknutím na tlačítko Preview). Vidíme, že data se nám sice zobrazila, ale mají mezi sebou velké mezery. Upravíme tedy umístění a velikost oddílu Design dle následujícího obrázku. Vše se dělá myší. Chytneme spodní linku detailu a posuneme jí až na spodní hranu textového pole našich fieldů. Já navíc v sekci Column Header na nadpisy nastavil tučné, větším písmem a upravil jejich popisky.

rep 01

Report nám data ukazuje již mnohem lépe.

finalni report

Tím bychom pro dnešek skončili a příště si ukážeme jak seskupit uživatele podle města, přidáme si tabulku kde budou např. přístupy uživatelů do databáze a uděláme si i nějaké statistiky.


 

  Aktivity (4)

Článek pro vás napsal Marek Kočí
Avatar
Pracuji jako vývojář aplikací pro systémy windows a linux.

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Předchozí článek
LaTeX
Miniatura
Všechny články v sekci
Software
Miniatura
Následující článek
Crack vs. Freeware

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!