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.