Sekilas mengenai Jasper Report : JasperReports is an open source Java reporting tool that can write to screen, to a printer or into PDF, HTML, Microsoft Excel, RTF, ODT, Comma-separated values and XML files. It can be used in Java-enabled applications, including Java EE or Web applications, to generate dynamic content. It reads its instructions from an XML or .jasper file.

selengkapnya : Jasper Report on Jaspersoft

Umumnya kita membuat sebuah aplikasi yang menghasilkan hasil olahan data dalam bentuk tabel yang akan langsung ditampilkan ke user melalui layar komputer dengan GUI (Swing atau web browser page) , diprint atau dalam bentuk reopen-able soft-copy/file (PDF,Microsoft Excel,RTF,ODT dll) . Untuk men-generate hasil olahan data tersebut kedalam bentuk file dengan template/desain yang diinginkan tentunya tidak mudah. Pertama kita harus membuat formula untuk mengenerate garis sesuai koordinat yang diinginkan untuk tabelnya, mengatur besar kecil font-nya, mengatur berapa halaman report, mengatur posisi gambar dan masih banyak lagi sampai dengan menyimpan file ke drive atau print yang harus dilakukan secara manual coding. Tentunya kegiatan tadi sangat menyita banyak waktu bagi para developer, apalagi jika harus membuat template/ desain laporan dengan bentuk yang lain. Oleh sebab itu digunakanlah JasperReport untuk mempermudah semua proses diatas tadi.

Penasaran seberapa mudahnya Jasper Report ? Berikut ini ialah langkah demi langkah tutorial cara menggunakan Jasper Report. Pada umumnya pembuatan report terdiri atas 3 langkah yaitu mengolah data yang ingin ditampilkan, membuat template desain report dan menampilkan report. Karena pengolahan data tergantung dari data yang ingin digunakan developer sesuai dengan kepentingan masing-masing, jadi saya hanya akan menjelaskan cara membuat template/desain report dan menampilkan report tersebut.

Pertama-tama siapkan tools yang akan digunakan, yaitu IDE, iReport ,library JasperReport  & kawan-kawannya (bisa dicari melalui mesin pencari kesukaan masing-masing). Saya sendiri menggunakan IDE NetBean 6.9,  iReport 3.7.4 dan serangkaian libraries dibawah ini :

  • jasperreports-3.7.4.jar
  • commons-beanutils-1.8.0.jar
  • commons-collections-2.1.1.jar
  • commons-digester-1.7.jar
  • commons-logging-1.0.4.jar
  • groovy-all-1.5.5.jar
  • gson-1.4.jar
  • iText-2.1.7.jar

Setelah memastikan tools dan library yang dibutuhkan lengkap, kita masuk ke tahap desain template.

DESAIN TEMPLATE

Buka iReport dan pilih File – New – Report, beri nama “TutorialJasper” disini kita disuruh memilih template dasar yang akan digunakan untuk desain report, untuk tutorial ini saya pilih Blank A4. Kemudian masukkan nama template reportnya dan lokasi penyimpanannya, tekan Next lalu Finish dan anda akan langsung dihadapkan dengan tampilan untuk mendesain templatenya.

Perhatikan menu Report Inspector :

Yang perlu diperhatikan ialah Parameters dan Band. Parameters ialah sejumlah parameter yang akan digunakan untuk mengisi report yang sedang kita buat template-nya sedangkan Band ialah tempat dimana report akan dituliskan yaitu Title, Page Header sampai dengan Background . Sifat-sifat Band ini beraneka ragam sesuai namanya. Title hanya dituliskan sekali dipaling atas dan hanya berada di page 1, Page Header ,Column Header, Detail, Column Footer,Page Footer dituliskan disetiap halaman, Last Footer & Summary hanya dituliskan diakhir page. Untuk mengenal lebih jauh mengenai sifat-sifat Band ini , bisa dengan cara mencobanya sendiri setelah tutorial ini.

Perhatikan juga Palette – Report Elements & Tools :

Drag and drop Report ElementTable kedalam Detail, pilih Just Create Empty Database, set Columns jadi 3 lalu tekan next. Setelah itu setup table sesuai warna yang diinginkan dengan properties seperti berikut :

Setelah itu tekan Finish. Klik Main Report di tengah bawah untuk kembali ke desain menyeluruh.

Drag and drop Tools – Current Date kedalam Page Header dan pilih format penanggalan sesukanya. Drag and drop Report Elements – Static Text kedalam Title dan edit judul report sesukanya.

Sekarang mulai membuat Parameters, klik kanan pada Parameters lalu tekan Add. Buatlah 2 buah Parameters, yang satu diganti namanya jadi “author” yang satunya lagi ganti jadi “dataSource” dengan cara klik kanan pada parameter tersebut lalu rename. Klik parameter “dataSource,” perhatikan pojok kanan bawah dari iReport, akan terlihat – dataSource – Properties, ubah Parameter Class-nya menjadi “net.sf.jasperreports.engine.JRDataSource” sedangkan untuk author dibiarkan saja “java.lang.String”.

NB : semua penamaan Parameters dan set Parameter Class tanpa tanda kutip !

Selanjutnya drag and drop Parameters “author” di Last Page Footer tadi dan rapihkan.

Kembali perhatikan Report Inspector disebelah kiri, expand Table Data Set 1 , klik kanan Fields , klik Add, buat 3 field. Ganti ketiga nama field tersebut jadi “first”,”midle” & “last”.

Sekarang tekan tombol Table 1 di tengah bawah untuk kembali ke desain Table.

Desain tabel, rapihkan lalu drag and drop ketiga field tadi sehingga menjadi seperti dibawah ini :

Sekarang kembali ke Main Report, klik kanan Table, klik Edit Table Datasource,  tekan tombol bergambar pensil, replace ekspresi dengan mencari dan klik ganda parameter “dataSource” yang sudah dibuat ,tekan apply, lalu tekan OK sampai semua dialog tertutup.

Langkah terakhir ialah compile, jika berhasil compile maka akan ditemukan file bernama report yang telah dibuat dengan extension .jasper, file inilah yang nantinya digunakan di program java-nya.

MENAMPILKAN REPORT DARI APLIKASI JAVA

Pertama-tama buat project baru, beri nama sesukanya, klik kanan Libraries – Add JAR/Folder dan tambahkan semua libraries yang disebutkan sebelumnya ke dalam project tersebut. Copy file TutorialJasper.jasper yang sudah dibuat tadi ke dalam project satu package dengan Main.class. Buat entitas atau tipe bentukan baru atau class bernama DummyData, isinya seperti dibawah ini :


/**
 *
 * @author mdsaputra
 */
public class DummyData
{
 private String first;
 private String middle;
 private String last;

 public String getFirst() {
 return first;
 }

 public void setFirst(String first) {
 this.first = first;
 }

 public String getMiddle() {
 return middle;
 }

 public void setMiddle(String middle) {
 this.middle = middle;
 }

 public String getLast() {
 return last;
 }

 public void setLast(String last) {
 this.last = last;
 }

}

NB :  Penamaan atribut harus sama dengan ketiga nama field yang dibuat tadi.

Selanjutnya buat engine untuk men-generate data dummy-nya dan menampilkan Jasper-nya menggunakan sekumpulan data dummy yang sudah ter-generate.

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author mdsaputra
 */
public class Main {

    /**
    * @param args the command line arguments
    */
    public static void main(String[] args)
    {
        new Main().report();
    }

    private void report()
    {
        Map params = new HashMap();
        //buat data dummy
        List<DummyData> listOfDummyData = new ArrayList<DummyData>();
        DummyData dummyData = new DummyData();
        for (int i = 0; i < 28; ++i) {
            dummyData = new DummyData();
            dummyData.setFirst("Meihta");
            dummyData.setMiddle("Dwiguna");
            dummyData.setLast("Saputra");
            listOfDummyData.add(dummyData);
        }

        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(listOfDummyData);
        System.out.println(dataSource.getRecordCount());
        params.put("author", "by : mdsaputra.wordpress.com");
        params.put("dataSource", dataSource);
        //net.sf.jasperreports.engine.JRDataSource
        try {
            JasperPrint printer = JasperFillManager.fillReport(getClass().getResourceAsStream("TutorialJasper.jasper"), params, new JREmptyDataSource());
            //generate kedalam file report.pdf
            JasperExportManager.exportReportToPdfFile(printer, "C:/report.pdf");
            //tampilkan print viewer/dialog
            //ya benar, jasper memiliki print dialog sendiri, kerenkan?
            //jadi tidak usah repot membuka file pdf yang sudah digenerate, dan memanggil fungsi print bawaan java
            JasperViewer jv = new JasperViewer(printer);
            jv.show();
        } catch (JRException ex) {
            ex.printStackTrace();
        }
    }

}

Source code diatas menampilkan print viewer dan mengenerate file pdf report.pdf, jika saat membuat template report-nya rapih dan benar, hasilnya bisa seperti dibawah ini :


Gampangkan? Selamat mencoba, maju terus para developer java Indonesia! Semoga bermanfaat. 🙂

subscribe & fast response :

Download Sample here or here