JasperJelentések tavasszal

1. Áttekintés

A JasperReports egy nyílt forráskódú jelentéstár, amely lehetővé teszi a felhasználók számára, hogy pixel tökéletes jelentéseket készítsenek, amelyeket sokféle formátumban, például PDF, HTML és XLS formátumban lehet kinyomtatni vagy exportálni.

Ebben a cikkben feltárjuk főbb jellemzőit és osztályait, és példákat valósítunk meg képességeinek bemutatására.

2. Maven-függőség

Először hozzá kell adnunk a jászjelentések függőség a mi pom.xml:

 net.sf.jasperreports jasperreports 6.4.0 

A műtárgy legújabb verziója itt található.

3. Jelentősablonok

A jelentésterveket a JRXML fájlok határozzák meg. Ezek rendes XML fájlok, sajátos szerkezettel, amelyeket a JasperReports motor képes értelmezni.

Most nézzük csak meg a JRXML fájlok releváns felépítését - hogy jobban megértsük a jelentéskészítési folyamat Java részét, amely az elsődleges célunk.

Hozzunk létre egy egyszerű jelentést az alkalmazottak adatainak bemutatásához:

3.1. Jelentések összeállítása

A JRXML fájlokat össze kell állítani, hogy a jelentésmotor adatokkal töltse ki őket.

Végezzük el ezt a műveletet a JasperCompilerManager osztály:

InputStream workerReportStream = getClass (). GetResourceAsStream ("/ workerReport.jrxml"); JasperReport jasperReport = JasperCompileManager.compileReport (workerReportStream);

Annak elkerülése érdekében, hogy minden alkalommal összeállítsuk, fájlba menthetjük:

JRSaver.saveObject (jasperReport, "alkalmazottReport.jasper");

4. Népesedés Jelentések

Az összeállított jelentések kitöltésének leggyakoribb módja az adatbázisból származó rekordok. Ehhez a jelentésnek tartalmaznia kell egy SQL lekérdezést, amelyet a motor végrehajt az adatok megszerzéséhez.

Először módosítsuk a jelentést egy SQL lekérdezés hozzáadásához:

    ... 

Most hozzunk létre egy egyszerű adatforrást:

@Bean public DataSource dataSource () {return new EmbeddedDatabaseBuilder () .setType (EmbeddedDatabaseType.HSQL) .addScript ("classpath: worker-schema.sql") .build (); }

Most kitölthetjük a jelentést:

JasperPrint jasperPrint = JasperFillManager.fillReport (jasperReport, null, dataSource.getConnection ());

Ne feledje, hogy elhaladunk nulla a második érvre, mivel jelentésünk még nem kap paramétereket.

4.1. Paraméterek

A paraméterek hasznosak olyan adatok továbbításához a jelentésmotorhoz, amelyeket nem talál az adatforrásában, vagy amikor az adatok a különböző futásidejű feltételektől függően változnak.

A részeket vagy akár a teljes SQL lekérdezést a jelentéskitöltési műveletben kapott paraméterekkel is megváltoztathatjuk.

Először módosítsuk a jelentést, hogy három paramétert kapjon:

       // ... 

Most adjunk hozzá egy címsort, hogy megmutassuk cím paraméter:

 // ...           ... 

Ezután módosítsuk a lekérdezést a minKérelem és feltétel paraméterek:

KIVÁLASZTÁS * AZ ALKALMAZOTTAKBÓL, AMIKOR FÉL>> $ P {minSalary} ÉS $ P! {Condition}

Vegye figyelembe a különböző szintaxist a feltétel paraméter. Ez azt mondja a motornak, hogy a paramétert nem szabad szabványként használni PreparedStatement paramétert, de mintha annak a paraméternek az értékét írták volna eredetileg az SQL lekérdezésbe.

Végül készítsük el a paramétereket és töltsük ki a jelentést:

Térképparaméterek = new HashMap (); paraméterek.put ("cím", "Alkalmazotti jelentés"); paraméterek.put ("minSalary", 15000,0); parameters.put ("feltétel", "LAST_NAME = 'Smith' FIRST_NAME MEGRENDELÉSE"); JasperPrint jasperPrint = JasperFillManager.fillReport (..., paraméterek, ...);

Ne feledje, hogy a paraméterek megfelelnek a jelentés paraméterneveinek. Ha a motor azt észleli, hogy hiányzik egy paraméter, akkor onnan szerzi be az értéket defaultValueExpression a paraméter értéke, ha van ilyen.

5. Exportálás

A jelentés exportálásához először egy exportáló osztály objektumát példányosítjuk, amely megfelel a szükséges fájlformátumnak.

Ezután megadjuk az előző kitöltött jelentést bemenetként, és meghatározzuk, hogy hol adjuk ki a kapott fájlt.

Opcionálisan beállíthatunk megfelelő jelentés- és exportkonfigurációs objektumokat az exportálási folyamat testreszabásához.

5.1. PDF

JRPdfExporter exportőr = új JRPdfExporter (); exportőr.setExporterInput (új SimpleExporterInput (jasperPrint)); exportőr.setExporterOutput (új SimpleOutputStreamExporterOutput ("workerReport.pdf")); SimplePdfReportConfiguration reportConfig = new SimplePdfReportConfiguration (); reportConfig.setSizePageToContent (true); reportConfig.setForceLineBreakPolicy (hamis); SimplePdfExporterConfiguration exportConfig = new SimplePdfExporterConfiguration (); exportConfig.setMetadataAuthor ("baeldung"); exportConfig.setEncrypted (true); exportConfig.setAllowedPermissionsHint ("NYOMTATÁS"); exportőr.setConfiguration (reportConfig); exportőr.setConfiguration (exportConfig); exportőr.exportReport ();

5.2. XLS

JRXlsxExporter exportőr = új JRXlsxExporter (); // Be- és kimenet beállítása ... SimpleXlsxReportConfiguration reportConfig = new SimpleXlsxReportConfiguration (); reportConfig.setSheetNames (új karakterlánc [] {"Alkalmazotti adatok"}); exportőr.setConfiguration (reportConfig); exportőr.exportReport ();

5.3. CSV

JRCsvExporter exportőr = új JRCsvExporter (); // bemenet beállítása ... exportőr.setExporterOutput (új SimpleWriterExporterOutput ("alkalmazóiReport.csv")); exportőr.exportReport ();

5.4. HTML

HtmlExporter exportőr = új HtmlExporter (); // A bemenet beállítása ... exportorter.setExporterOutput (új SimpleHtmlExporterOutput ("alkalmazottReport.html")); exportőr.exportReport ();

6. Aljelentések

Az aljelentések nem más, mint egy másik jelentésben beágyazott szabványos jelentés.

Először hozzunk létre egy jelentést az alkalmazott e-mailjeinek bemutatására:

Most módosítsuk a munkavállalói jelentést az előzőre:

Ne feledje, hogy az aljelentésre a lefordított fájl nevével hivatkozunk, és átadjuk a idEmployee paraméterként pedig az aktuális jelentéskapcsolatot.

Ezután állítsuk össze mindkét jelentést:

InputStream workerReportStream = getClass (). GetResourceAsStream ("/ workerReport.jrxml"); JasperReport jasperReport = JasperCompileManager.compileReport (workerReportStream); JRSaver.saveObject (jasperReport, "alkalmazottReport.jasper"); InputStream emailReportStream = getClass (). GetResourceAsStream ("/ workerEmailReport.jrxml"); JRSaver.saveObject (JasperCompileManager.compileReport (emailReportStream), "workerEmailReport.jasper");

A jelentés kitöltésére és exportálására szolgáló kódunk nem igényel módosításokat.

7. Következtetés

Ebben a cikkben röviden áttekintettük a JasperReports könyvtár alapvető jellemzőit.

Képes voltunk jelentéseket összeállítani és adatbázisból rekordokkal feltölteni; paramétereket adtunk át, hogy a jelentésben megjelenített adatokat a különböző futásidejű feltételeknek megfelelően megváltoztassuk, beágyazott aljelentéseket és exportáltuk őket a leggyakoribb formátumokba.

A cikk teljes forráskódja megtalálható a GitHub oldalon.