JasperReports 3.5 for Java Developers — Save 50%
Create, Design, Format, and Export Reports with the world's most popular Java reporting library
In this two-part article by David Heffelfinger, instead of writing JRXML templates by hand, we will learn to design reports graphically by dragging report elements into a report template and by using its graphical user interface to set report attributes. In this first part, we will help you set up iReport on your machine and get you started with designing graphical reports.
JasperSoft, the company behind JasperReports, offers a graphical report designer called iReport. iReport started as an independent project by Giulio Toffoli. JasperSoft recognized the popularity of iReport and, in October 2005, hired Giulio Toffoli and made iReport the official report designer for JasperSoft. Like JasperReports, iReport is also open source. It is licensed under the GNU Public License (GPL).
In 2008, iReport was rewritten to take advantage of the NetBeans platform. It is freely available both as a standalone product and as a plugin to the NetBeans IDE.
In this article, we will be covering the standalone version of iReport; however, the material is also applicable to the iReport NetBeans plugin.
By the end of this article, you will be able to:
- Obtain and set up iReport
- Quickly create database reports by taking advantage of iReport's Report Wizard
- Design reports graphically with iReport
iReport can be downloaded from its home page at http://jasperforge.org/projects/ireport by clicking on the Download iReport image slightly above the center of the page.
Once we click on the image, we are directed to an intermediate page where we can either log in with our JasperForge account or go straight to the download page.
Either logging in or clicking on the No Thanks, Download Now button takes us to the iReport download page.
The standalone iReport product is in the first row of the table on the page. To download it, we simply click on the Download link in the last column. Other downloads on the page are for older versions of JasperReports, iReport NetBeans plugin, and other JasperSoft products.
iReport can be downloaded as a DMG file for Macintosh computers, as a Windows installer for Windows PCs, as a source file, as a ZIP file, or as a gzipped TAR file. To install iReport, simply follow the usual application installation method for your platform.
If you chose to download the ZIP or gzipped TAR file, simply extract it into any directory. A subdirectory called something like iReport-nb-3.5.1 will be created. (The exact name will depend on the version of iReport that was downloaded.) Inside this directory, you will find a bin subdirectory containing an executable shell script called ireport and a couple of Windows executables, ireport.exe and ireport_w.exe. On Windows systems, either EXE file will start iReport.
The difference between the two Windows executables is that theireport.exe will display a command-line window when iReport is executed, and ireport_w.exe won't. Both versions provide exactly the same functionality.
On Unix and Unix-like systems, such as Linux and Mac OS, iReport can be started by executing the ireport shell script.
The following screenshot illustrates how iReport looks when it is opened for the first time:
Setting up iReport
iReport can help us quickly generate database reports. To do so, we need to provide it with the JDBC driver and connection information for our database.
iReport comes bundled with JDBC drivers for several open source relational database systems, such as MySQL, PostgreSQL, HSQLDB, and others. If we want to connect to a different database, we need to add the JDBC driver to iReport's CLASSPATH. This can be done by clicking on Tools | Options and then selecting the Classpath tab.
To add the JDBC driver to the CLASSPATH, click on the Add JAR button, and then navigate to the location of the JAR file containing the JDBC driver. Select the JAR file and click on the OK button at the bottom of the window.
We won't actually add a JDBC driver, as we are using MySQL for our examples, which is one of the RDBMS systems supported out of the box by iReport. The information just provided is for the benefit of readers using an RDBMS system that is not supported out of the box.
Before we can create reports that use an RDBMS as a datasource, we need to create a database connection. In order to do so, we need to click on the Report Datasources icon in the toolbar:
After doing so, the Connections / Datasources configuration window should pop up.
To add the connection, we need to click on the New button, select Database JDBC connection, and then click on the Next> button.
We then need to select the appropriate JDBC driver, fill in the connection information, and click on the Save button.
Before saving the database connection properties, it is a good idea to click on theTest button to make sure we can connect to the database. If we can, we should see a pop-up window like the following:
After verifying that we can successfully connect to the database, we are ready to create some database reports.
Creating a database report in record time
iReport contains a wizard that allows us to quickly generate database reports (very useful if the boss asks for a report 15 minutes before the quitting time on a Friday!). The wizard allows us to use one of the predefined templates that are included with iReport. The included report templates are divided into two groups: templates laid out in a "columnar" manner and templates laid out in a "tabular" manner. Columnar templates generate reports that are laid out in columns, and tabular templates generate reports that are laid out like a table.
In this section, we will create a report displaying all the aircraft with a horsepower of 1000 or more.
To quickly create a database report, we need to go to File | New | Report Wizard.
We should then enter an appropriate name and location for our report and click on Next>.
Next, we need to select the datasource or database connection to use for our report. For our example, we will use the JDBC connection we configured in the previous section. We can then enter the database query we will use to create the report. Alternatively, we can use the iReport query designer to design the query.
For individuals with SQL experience, in many cases it is easier to come up with the database query in a separate database client tool and then paste it in the Query text area than using the query designer.
The complete query for the report is:
am.model as aircraft_model,
ae.model as engine_model
from aircraft a, aircraft_models am, aircraft_engines ae
where a.aircraft_model_code = am.aircraft_model_code
and a.aircraft_engine_code = ae.aircraft_engine_code
and ae.horsepower >= 1000
The following window shows a list of all the columns selected in the query, allowing us to select which ones we would like to use as report fields:
In this case, we want the data for all columns in the query to be displayed in the report. Therefore, we select all columns by clicking on the second button.
We then select how we want to group the data and click on Next>. This creates a report group.
In this example, we will not group the report data. The screenshot illustrates how the drop-down box contains the report fields selected in the previous step.
We then select the report layout (Columnar or Tabular). In this example, we will use the Tabular Layout.
After selecting the layout, we click on Next> to be presented with the last step.
We then click on Finish to generate the report's JRXML template.
While the template is automatically saved when it is created, the report generated by the Preview button is not automatically saved.
We can then preview our report by clicking on Preview.
That's it! We have created a report by simply entering a query and selecting a few options from a wizard.
|Create, Design, Format, and Export Reports with the world's most popular Java reporting library|
eBook Price: $26.99
Book Price: $44.99
Tweaking the generated report
Admittedly, the report title and column headers of our report need some tweaking. To modify the report title so that it actually reflects the report contents, we can either double-click on the report title on iReport's main window and type an appropriate report title, or we can modify the value of the Text property for the title static text in the Properties window at the lower righthand side.
Double-clicking on the title is certainly the fastest way to modify it. However, the Properties window allows us to modify not only the text, but also the font, borders, and several other properties.
We can follow the same procedure for each column header. The following screenshot shows the resulting template as displayed in iReport's main window:
We'll preview the report one more time to see the final version.
There you have it! The boss can have his or her report, and we can leave work and enjoy the weekend!
Creating a report from scratch
In the previous section, we discussed how to quickly generate a database report by using iReport's Report Wizard. The wizard is very convenient because it allows us to create a report very quickly. However, its disadvantage is that it is not very flexible. In this section, we will learn how to create a report from scratch in iReport. Our report will show the tail number, serial number, and model of every aircraft in theflightStats database. For details of the database used for this example, visit Database for out Reports section of the Creating Dynamic Reports from Databases article.
To create a new report, we need to go to the File | New | Empty report menu item.
At this point, we should enter a Report name and Location.
In this example, we will set the report name to iReportDemo and accept all the other default values. After clicking on the OK button, iReport's main window should look like this:
The horizontal lines divide the different report sections. Any item we insert between any two horizontal lines will be placed in the appropriate report section's band. Horizontal lines can be dragged to resize the appropriate section(s).
The vertical lines represent the left and right report margins. It is not possible to drag the vertical lines. To modify the left and right margins, we must select the report in the Report Inspector window at the top left.
Then, we need to modify the margins from the Properties window at the bottom right.
Properties for all the report sections and elements, such as variables, scriptlets, title, background, detail, and so on, can be modified by following the approach described here.
Going back to our empty report template, let's add a report title. For this, we will use the static text Aircraft Report. To add the static text, we need to use the Static Text component in the Palette.
We then need to drag the Static Text component to the Title area of the report. iReport, by default, inserts the text Static text inside this field. To modify this default text, we can double-click anywhere inside the field and type in a more appropriate title. Alternatively, we can modify the Text property for the static text field in the Properties window at the lower righthand side.
In the Properties window, we can modify other properties for our text. In the above screenshot, we modified the text size to be 18 pixels, and we made it bold by clicking on the checkbox next to the Bold property.
We can center the report title within the Title band by right-clicking on it, selectingPosition, and then Center.
After following all of these steps, our report should now look like this:
Applying the same techniques used for adding the report title, we can add some more static text fields in the page header. After adding the page header, our report now looks like this:
We modified the Vertical Alignment of all three text fields in the page header by selecting the appropriate values in the Properties window for each one of them.
Now it is time to add some dynamic data to the report. We can enter a report query selecting the report node in the Report Inspector window and then selectingEdit Query.
As we type the report query, by default iReport retrieves report fields from it. This query will retrieve the tail number, serial number, and model of every aircraft in the database.
Now that we have a query and report fields, we can add text fields to the report. We can do so by dragging the fields in the Report Inspector window to the appropriate location in the report template.
After aligning each text field with the corresponding header, our report should now look like this:
To avoid extra vertical space between records, we resized the Detail band by dragging its bottom margin up. The same effect can be achieved by double-clicking on the bottom margin.
Notice that we have an empty Column Header band in the report template. This empty band will result in having some whitespace between each header and the first row in the Detail band. To avoid having this whitespace in our report, we can easily delete this band by right-clicking on it in the Report Inspector window and selecting Delete Band.
We now have a simple but complete report. We can view it by clicking on Preview.
That's it! We have created a simple report graphically with iReport.
In this first part of the article, we learned how to install and set up iReport, use iReport's Report Wizard to quickly generate a report, and graphically design custom reports. In the next part, we will focus on creating more elaborate reports by using iReport's graphical user interface.
|Create, Design, Format, and Export Reports with the world's most popular Java reporting library|
eBook Price: $26.99
Book Price: $44.99
About the Author :
David Heffelfinger is the Chief Technology Officer of Ensode Technology, LLC, a software consulting firm based in the greater Washington DC area. He has been architecting, designing and developing software professionally since 1995 and has been using Java as his primary programming language since 1996. He has worked on many large scale projects for several clients including the US Department of Homeland Security, Freddie Mac, Fannie Mae, and the US Department of Defense. He has a Masters degree in Software Engineering from Southern Methodist University. David is editor in chief of Ensode.net (http://www.ensode.net), a website about Java, Linux, and other technology topics.
Books From Packt