Membuat Laporan dengan JasperReports
JasperReports adalah pustaka Java untuk merancang dan membuat laporan. Tata letak laporan berada di templat `.jrxml`, data diisi dari basis data atau objek Java, dan hasilnya diekspor ke PDF, Excel, atau HTML. Artikel ini menunjukkan struktur templat dan kode yang membangun laporan dari daftar baris.
Catatan pengujian: komputer yang dipakai untuk menulis artikel ini tidak memiliki pustaka JasperReports, jadi kodenya belum dijalankan di sini. Tambahkan dependensinya seperti yang dijelaskan dokumentasi proyek dan uji sendiri.
Yang Anda butuhkan
- JDK 17 atau lebih baru
- Pustaka JasperReports lewat Maven, misalnya `net.sf.jasperreports:jasperreports`
- Perancang seperti Jaspersoft Studio untuk mendesain templat dengan seret dan lepas
Cara kerjanya
Langkah 1: rancang templat
File `.jrxml` adalah XML yang mendeklarasikan field data, header, baris detail, dan footer. Contoh field:
<field name="name" class="java.lang.String"/>
<field name="score" class="java.lang.Integer"/>
Di band `<detail>`, tambahkan `textField` yang merujuk ke `$F{name}` dan `$F{score}` untuk menampilkan nilai setiap baris.
Langkah 2: siapkan data dan bangun laporan
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.List;
import java.util.Map;
public class ReportDemo {
public static class Row {
private final String name;
private final int score;
public Row(String name, int score) { this.name = name; this.score = score; }
public String getName() { return name; }
public int getScore() { return score; }
}
public static void main(String[] args) throws Exception {
List<Row> rows = List.of(new Row("Budi", 85), new Row("Siti", 72));
JasperReport report = JasperCompileManager.compileReport("scores.jrxml");
JasperPrint print = JasperFillManager.fillReport(report, Map.of(), new JRBeanCollectionDataSource(rows));
JasperExportManager.exportReportToPdfFile(print, "scores.pdf");
}
}
- `compileReport` mengubah `.jrxml` menjadi bentuk yang bisa dijalankan.
- `fillReport` menggabungkan templat dengan data.
- `exportReportToPdfFile` menulis PDF.
Kesalahan umum
- **Nama field tidak sesuai dengan getter:** nama harus persis sama.
- **Font bahasa Indonesia atau Thai tidak tampil:** atur font yang mendukung teks tersebut di templat dan di sistem.
- **Encoding tidak diatur:** pastikan file `.jrxml` dan string di kode memakai UTF-8.
Langkah berikutnya
Tambahkan grup ke laporan, misalnya total per mata pelajaran, atau kirim nama sekolah sebagai parameter.
Ringkasan
JasperReports memisahkan tata letak dari data. Templat menentukan tampilan, kode mengisi data, dan hasilnya diekspor ke format yang Anda perlukan. Dengan cara ini tata letak laporan mudah diubah tanpa menyentuh kode utama.