A Simple Java Desktop JasperReport Example
Hi, im currently testing the latest version of iReport, iReport 4.5.1. For the test, im trying to create a very simple reporting, consist of 2 column and without database connection. Im using a simple Array of Maps to fill my jasper report’s data using the JRMapCollectionDataSource class.
Here is my report example,
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<property name="ireport.zoom" value="1.0"/>
<property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/>
<field name="name" class="java.lang.String"/>
<field name="address" class="java.lang.String"/>
<background>
<band splitType="Stretch"/>
</background>
<title>
<band height="31" splitType="Stretch">
<staticText>
<reportElement x="235" y="0" width="100" height="31"/>
<textElement>
<font size="24"/>
</textElement>
<text><![CDATA[Judul Saya]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band height="35" splitType="Stretch"/>
</pageHeader>
<columnHeader>
<band height="22" splitType="Stretch">
<staticText>
<reportElement x="0" y="2" width="100" height="20"/>
<textElement/>
<text><![CDATA[name]]></text>
</staticText>
<staticText>
<reportElement x="200" y="2" width="100" height="20"/>
<textElement/>
<text><![CDATA[address]]></text>
</staticText>
</band>
</columnHeader>
<detail>
<band height="20" splitType="Stretch">
<textField>
<reportElement x="0" y="0" width="200" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="221" height="20"/>
<textElement/>
<textFieldExpression><![CDATA[$F{address}]]></textFieldExpression>
</textField>
</band>
</detail>
<columnFooter>
<band height="13" splitType="Stretch"/>
</columnFooter>
<pageFooter>
<band height="14" splitType="Stretch"/>
</pageFooter>
<summary>
<band height="8" splitType="Stretch"/>
</summary>
</jasperReport>
Dont forget to compile it, and this is my java code to call my report. It call for .jasper file instead of .jrxml files.
package com.edw.main;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRMapCollectionDataSource;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import org.apache.log4j.Logger;
public class Main {
private Logger logger = Logger.getLogger(Main.class);
public Main() {
}
private void start() {
try {
// load report location
FileInputStream fis = new FileInputStream("report.jasper");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fis);
// fill report
List<Map<String,?>> maps = new ArrayList<Map<String, ?>> ();
for (int i = 0; i < 10; i++) {
Map<String,Object> map = new HashMap<String, Object>();
map.put("name", getRandomString());
map.put("address", getRandomString());
maps.add(map);
}
JRMapCollectionDataSource dataSource = new JRMapCollectionDataSource(maps);
// compile report
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(bufferedInputStream);
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), dataSource);
// view report to UI
JasperViewer.viewReport(jasperPrint, false);
} catch (Exception e) {
logger.error(e, e);
}
}
private String getRandomString(){
return UUID.randomUUID().toString();
}
public static void main(String[] args) {
Main main = new Main();
main.start();
}
}
And some screenshots from my project,
Have fun with Jasper Report 😉












