Senin, 10 Maret 2008

Reporting With JasperReport And iReport (Java)

JasperReport

JasperReport merupakan library di lingkungan Java untuk pemroses laporan. Dengan library ini, kita dapat menampilkan laporan dalam bentuk print preview, melakukan export ke beberapa format dokumen lain (antara lain PDF, HTML, text, Excel), menampilkan gambar, grafik maupun tabel. Berikut beberapa library lain yang digunakan juga dalam JasperReport : commons-beanutils.jar, commons-collections.jar, commons-digester.jar, commons-logging.jar, itext-1.02b.jar, jfreechart-0.9.21.jar.

Penjelasan mengenai fungsi-fungsi tiap library yang digunakan:

Library

Keterangan

commons-logging

untuk mengirim output ke log

commons-collections

untuk manage collection data

commons-beanutils

untuk java beans

commons-digester

untuk parsing xml

jfreechart

untuk mengatur penggunaan grafik

itext

untuk export report ke pdf atau rtf

Laporan yang kita buat nantinya dapat dikaitkan ke database berdasar connection string dan sql yang kita inginkan. JasperReport mendasarkan format dokumen definisi laporan yang akan dikompilasi berbasis pada XML, sehingga nantinya dapat dengan mudah dapat dikonversi ke format dokumen lain dengan memanfaatkan XSLT ataupun FO (Format Object).

B. Langkah-Langkah

Buat File FirstReport.jrxml

PUBLIC "-//JasperReports//DTD Report Design//EN"

"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

Keterangan :

<> menggambarkan teks statis yang tidak tergantung pada datasources

manapun , variabel, parameter.

<> menggambarkan lebar dan posisi unsur <> itu.

<> menggambarkan teks statis yang nyata yang dipertunjukkan pada laporan itu

Buat Program CallFirstReport.java

Source CallFirstReport.java

public class CallFirstReport {

public CallFirstReport() {

try {

JasperCompileManager.compileReportToFile("c:\\FirstReport.jrxml");

JasperFillManager.fillReportToFile("c:\\FirstReport.jasper",

new HashMap(), new JREmptyDataSource());

JasperViewer.viewReport("c:\\FirstReport.jrprint", false);

}catch (Exception ex) {

System.out.println("Gagal Membuat report " + ex);

}}

public static void main(String[] args) {

new CallFirstReport();

}

}

File FirstReport.jrxml merupakan contoh desain template sederhana untuk membuat suatu report dengan menampilkan hasil ini file jasperku yang pertama, belum jika nanti ada banyak desain – desain dan data-data yang lain. Bayangkan saja, kita harus mengetahui dan hafal tag-tag dalam JasperReport dan harus pintar-pintar mengatur bentuknya. Betapa reportnya kita nanti dalam menyusun suatu desain. Tapi kita tidak perlu cemas, karena sekarang ada tools untuk memudahkan kita untuk membuat desain jasper dengan lebih mudah dan efisien. Tools itu bernama iReport, versi terbaru waktu menulis modul ini, iReport versi 2.0.4.

iReport

iReport 2.0.4 adalah merupakan perangkat lunak bantu untuk perancangan laporan secara visual yang nantinya dapat di kompilasi dengan menggunakan JasperReport sehingga menjadi file *.jasper atau *.jrxml yang dapat langsung dipanggil oleh program Java.

Komponen-komponen iReport :

1. Koneksi Database / Datasource

Sebelum kita memulai mendesain sebuah report dalam iReport, terlebih dahulu langkah yang kita harus lakukan adalah kita harus melakukan koneksi ke database. Dalam hal ini kita akan membuat koneksi database dengan menggunakan JDBC Connection.

Langkah-langkahnya adalah:

  1. Pilih Data -> Connection/Datasource, Klik new, akan muncul wizard.
  2. Pilih “Database JDBC Connection”. Kemudian akan muncul form Connections properties.
  3. Kemudian Name diisi dengan nama Koneksi
  4. JDBC Driver diisi dengan kelas driver yang akan digunakan. Misal kita akan menggunakan Database MySQL, sehingga driver classnya diisi dengan “com.mysql.jdbc.Driver”.
  5. JDBC URL diisi dengan url dari database yang akan digunakan. Misal kita akan menggunakan Database MySQL dengan dijalankan di localhost dan nama databasenya rudy, maka penulisan urlnya menjadi “jdbc:mysql://localhost/rudy”.
  6. User Name dan Password diisi dengan username dan password untuk login ke dalam database yang digunakan.
  7. Kemudian klik save untuk menyimpan koneksi atau klik test untuk mengecek apakah konfigurasi telah sesuai.

Gambar Tampilan Konfigurasi koneksi ke database

2. Query Database

Langkah selanjutnya setelah kita berhasil membuat koneksi ke database di iReport, selanjutnya kita perlu membuat query yang digunakan untuk menampilkan data yang ingin kita tampilkan.

  1. Pilih Data -> Report Query
  2. Kemudian isikan Query database pada text area yang berada di tengah form.
  3. Setelah Query diisikan kemudian akan muncul field-field dari hasil query tersebut. Field-field tersebut berada dalam tabel yang berada di bagian bawah form.

Sekarang kita telah mendapatkan field-field dari database, yang nantinya akan digunakan untuk keperluan desain report.

Gambar Tampilan Report Query

Dalam iReport ada 3 komponen utama yang digunakan untuk menampung data yaitu Field, Variable dan Parameter. Komponen-komponen tersebut dapat dilihat pada bagian Document Structure.

Gambar Tampilan Document Structure

3. Field

Field digunakan untuk menampung data hasil dari query database. Seperti contoh diatas ada 3 buah field yaitu ID, NAMA_ASISTEN dan STATUS.

4. Variables

Variables digunakan untuk menampung data yang akan digunakan di dalam report. pada iRepot telah tersedia beberapa variables build in antara lain PAGE_NUMBER, COLUMN_NUMBER, REPORT_COUNT, PAGE_COUNT, COLUMN_COUNT. kita juga bisa mendefinisikan variables custom dengan cara klik kanan node variables pada document structure pilih add -> variables.

5. Parameters

Parameters digunakan untuk masukan atau melewatkan data dari kode Java ke dalam report. iReport juga telah menyediakan beberapa parameters build in dan kita juga bisa menambahkan parameters sesuai dengan yang kita butuhkan. dengan cara klik kanan node parameters pada document structure pilih add -> parameters.

6. Design

Setelah kita melewati beberapa langkah diatas, kita telah siap untuk mendesain report. untuk mendesainnya kita cukup melakukan Drag and Drop saja, komponen-komponen yang kita butuhkan ke dalam bidang desain.

Gambar Tampilan Bidang Desain

Pada bidang desain terbagi menjadi 9 bidang desain yaitu title, pageHeader, columnHeader, detail, columnFooter, pageFooter, lastPageFooter, summary dan Background. Ke sembilan bidang desain itu, kita dapat mengatur ukurannya sesuai dengan kehendak kita dan bahkan juga dapat kita hilangkan. Untuk mengaturnya klik kanan bidang desain kemudian pilih band properties.

Penjelasan mengenai 9 bidang desain dibawah ini:

1. Background

Background disini dapat diisi dengan gambar maupun text, yang nantinya akan menjadi background pada setiap halaman dalam report.

2. title

title akan dicetak sekali pada bagian paling atas report. title ini dapat diisi dengan judul report atau kop report.

3. pageHeader

pageHeader akan dicetak pada bagian atas di setiap report.

4. columnHeader

columnHeader akan dicetak pada bagian atas tabel / kolom pada report. biasanya digunakan untuk nama kolom.

5. detail

detail adalah isi dari report itu sendiri. Biasanya komponen yang berada pada detail ini adalah field yang nantinya akan dicetak sebanyak data dari hasil query database.

6. columnFooter

penjelasannya sama dengan columnHeader, hanya saja dicetak di bagian bawah.

7. pageFooter

penjelasannya sama dengan pageHeader, hanya saja dicetak pada bagian bawah.

8. lastPageFooter

lastPageFooter akan dicetak sekali pada bagian bawah halaman report paling belakang

9. summary

summary akan dicetak pada halaman paling belakang dari report. biasanya diisi dengan grafik atau keterangan umum dari report.

Buat Program Java ShowReport.java

import java.sql.*;

import java.util.*;

import net.sf.jasperreports.engine.*;

import net.sf.jasperreports.view.JasperViewer;

public class ShowReport {

public static Connection connectDB (String databaseName,

String userName, String password) {

Connection connection = null;

try {

Class.forName("com.mysql.jdbc.Driver");

connection = DriverManager.getConnection

("jdbc:mysql://localhost/rudy", "root", "rudy");

} catch (Exception ex) {

System.out.println(“Tidak dapat terhubung” + ex);

}

return connection;

}

public void viewReport() {

try {

Map map = new HashMap();

map.put("v_asisten", "Java");

JasperDesign jasperDesign = JRXmlLoader.load

("c:\\classic.jrxml");

JasperReport jasperReport = JasperCompileManager.

compileReport(jasperDesign);

Connection connection = connectDB

("jdbc:mysql://localhost/rudy", "root", "rudy");

JasperPrint jasperPrint = JasperFillManager.

fillReport(jasperReport, map, connection);

JasperViewer.viewReport(jasperPrint);

} catch (Exception ex) {

System.out.println("Gagal Membuat report " + ex);

}

}

public static void main(String[] args) {

ShowReport report = new ShowReport();

report.viewReport();

}

}

1 komentar:

Unknown mengatakan...

boleh minta librarynya gak sob??