JasperReports quickly played

xiaoxiao2021-03-14  193

Original author: David R. Heffelfinger

English Original: Getting Started with JasperReports

preface:

Because the needs of the new project, I have been studying the report tool recently. One is JasperReports. JasperReports is a very popular open source (LGPL) report tool library written in Java. But unfortunately, it lacks a good document so I have a simple report. After a period of pondering, I made a simple statement, this article is to summarize some of the work you need to do in JasperReport. In the resource information you can find more documentation and information about JasperReports.

Quick start

JasperReports' reports are defined with an XML file, and the JRXML will be used for the name. A typical JRXML file contains the following elements:

- root elements

- The title of the report, only in the beginning of the report once</p> <p><PageHeader> - Header, the report starts at the beginning of each page</p> <p><detail> - report body</p> <p><PageFooter> - Footer, the report is printed at the end of the page</p> <p><band> - Defines the report part, all of the above elements contain a band element as their unique child element</p> <p>In addition to the root element, all elements are optional. Here is an example of a JRXML file, which will generate a simple report that displays string "Hello World!".</p> <p><? XML Version = "1.0"?> <! DOCTYPE JASPERREPORT PUBLIC "- // jasperreports // DTD Report Design //" "http://jasperreports.sourceforge.net/dtds/jasperReport.dtd"></p> <p><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></p> <p>In this simple example, I have not written option <title>, <pageheader> is also <PageFooter>. <staticText> Element, as the name suggests, display static text on the report, just like you see, it contains a separate <text> element definition that will be displayed.</p> <p>The JRXML file requires "Compilation" into a binary format of the JasperReports specification, which can call the method CompileReport () for class net.sf.jasperreports.Engine.jasperCompileManager. This method has several overloaded forms, in our example, we will use a single string as a method of parameter. Refer to the JasperReport documentation to get the details of other versions of this method.</p> <p>Public Class JasperReportsIntro {</p> <p>Public static void main (string [] args)</p> <p>{</p> <p>JasperReport JasperReport;</p> <p>JasperPrint JasperPrint</p> <p>Try</p> <p>{</p> <p>jasperReport = JasperCompileManager.compileReport ( "reports / jasperreports_demo.jrxml"); jasperPrint = JasperFillManager.fillReport (jasperReport, new HashMap (), new JREmptyDataSource ()); JasperExportManager.exportReportToPdfFile (jasperPrint, "reports / simple_report.pdf");</p> <p>}</p> <p>Catch (JRException E)</p> <p>{</p> <p>E.PrintStackTrace ();</p> <p>}</p> <p>}</p> <p>}</p> <p>A JRXML file only needs to be compiled once, but in this simple example, each executing program will be compiled. Before the report is generated, you need to "fill" it, here we call the FillReport () method in the net.sf.jasperreports.Engine.jasperfillManager class. Similarly, it also has many overloaded forms. Here we use one of the methods with three parameters, the first is the example of JasperReport, the second is HashMap, which can contain any parameters to be passed to Report, Three parameter objects are to implement JRDataSource interface. This method is in our example:</p> <p>Jasperprint = JasperfillManager.FillReport</p> <p>JasperReport, new hashmap (), new jremptyDataSource ());</p> <p>Because the Report class in our example does not require any parameters, it is passed to a empty HashMap, the third parameter net.sf.jasperReports.Engine.jremptyDataSource is a simple class that implements JRDataSource interface, this basic class is not Contains any data.</p> <p>The parameters are self-evlantory.</p> <p>Finally, in the example, we export the report as a PDF file, you can open with Adobe Acrobat, XPDF, EVINCE, or other PDF reading tools. The code in the example is: JaspeExportManager.exportReportTopdffile (JasperPrint, "Reports / Simple_Report.pdf");</p> <p>end</p> <p>JasperReports is a very excellent and popular open source report engine, which provides enough information to quickly start JasperReports. To get a richer document, Jaspersoft released an e-book: The JasperReports Ultimate Guide</p> <p>related resources:</p> <p>Displaying JasperReports PDF Reports on The Browser</p> <p>Creating Database Reports with JasperReports</p> <p>JasperReports' Web Site</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-129278.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="129278" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.054</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'NbFwid8NxJjAETLexNrTHp0gtsDw8gv6SF97vxVAdiFxmaZyFtUW3cEQv0TiiTirmYM0bknjCHs_2BPnY8eqQfcQ_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>