Cara Membuat Report di Java dengan JasperReport
Cara Membuat Report di Java dengan JasperReport - Dalam pemrograman java, kalian harus mengenal library JasperReport atau IReport. Pada tutorial java kali ini saya akan membahas apa itu JasperReport, bagaimana cara menggunakan JasperReport dan contoh penggunaan JasperReport.
Apa itu JasperReport?
JasperReport merupakan aplikasi berbasis open source yang digunakan untuk membuat report atau laporan pada pemrograman java. JasperReport selain digunakan untuk melakukan cetak atau printing juga memiliki keluaran laporan dalam berbagai format, seperti : Microsoft Excel, CSV, PDF, RTF, ODC, HTML dan XML. JasperReport dapat digunakan pada Java Desktop (Java Swing) maupun Java Web (J2EE).
Tutorial Cara Membuat Report
Tools yang saya gunakan sebagai berikut :- Netbeans IDE
- IReport (bagi yang belum memilikinya, silahkan download jasper report di situs resminya disini)
- Untuk database saya menggunakan Postgresql versi 11
- commons-beanutils-1.8.0.jar
- commons-collections-2.2.1.jar
- commons-digester-2.1.jar
- commons-logging-1.1.1.jar
- commons-javaflow-20060411.jar
- groovy-all-2.0.1.jar
- iText-2.1.7.js2.jar
- jasperreports-4.7.0.jar (*bisa diganti dengan versi terbaru)
- core-3.1.1.jar
- jdt-compiler-3.1.1.jar
- jxl-2.6.10.jar
- poi-3.7-20101029.jar
Membuat design laporan menggunakan ireport (report design software).
Berikut struktur project yang saya buat untuk membuat contoh report :
Contoh Source Code IReport di Java
- ContohPrinting - com.community.controller - ControllerPrinting.java - com.community.entity - Mahasiswa.java - com.community.sql - IMahasiswa.java - Koneksi.java - MahasiswaSQL.java - com.community.view - AppMain.java - ViewPrinting.java
- Membuat Class Entity Buatlah class Mahasiswa di package com.community.entity, seperti berikut :
- Membuat Class Koneksi Buatlah 2 buah class (Koneksi dan MahasiswaSQL) dan 1 buah interface (IMahasiswa) di package com.community.sql, seperti berikut :
- Membuat Tampilan atau View Report Buatlah sebuah class ViewReport untuk membuat sebuah tampilan JFrame.
- Menambahkan Aksi atau Controller Printing Buatlah sebuah class ControllerPrinting untuk mengambil data dari database dan aksi cetak atau printing.
- Method getDataMahasiswa berfungsi untuk mengambil data dari database dan dimasukkan ke dalam JTable.
- Method cetakLaporan() merupakan method yang saya gunakan untuk melakukan printing tanpa parameter (ireport tanpa parameter).
package com.community.entity; public class Mahasiswa { private long id; private String nim; private String nama; private String ttl; private String jurusan; private String alamat; public Mahasiswa() { } public Mahasiswa(long id, String nim, String nama, String ttl, String jurusan, String alamat) { this.id = id; this.nim = nim; this.nama = nama; this.ttl = ttl; this.jurusan = jurusan; this.alamat = alamat; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getNim() { return nim; } public void setNim(String nim) { this.nim = nim; } public String getNama() { return nama; } public void setNama(String nama) { this.nama = nama; } public String getTtl() { return ttl; } public void setTtl(String ttl) { this.ttl = ttl; } public String getJurusan() { return jurusan; } public void setJurusan(String jurusan) { this.jurusan = jurusan; } public String getAlamat() { return alamat; } public void setAlamat(String alamat) { this.alamat = alamat; } @Override public String toString() { return nim; } }
Class Koneksi
package com.community.sql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Koneksi { public static Connection getKoneksi() { Connection koneksi = null; try { String driver = "org.postgresql.Driver"; String url = "jdbc:postgresql://localhost:5432/db_mahasiswa"; String user = "postgres"; String password = "postgres"; Class.forName(driver); koneksi = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException | SQLException ex) { ex.printStackTrace(); } return koneksi; } }
Interface IMahasiswa
package com.community.sql; import com.community.entity.Mahasiswa; import java.util.List; public interface IMahasiswa { public ListgetDataMahasiswa(); }
Class MahasiswaSQL
package com.community.sql; import com.community.entity.Mahasiswa; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class MahasiswaSQL implements IMahasiswa{ @Override public ListgetDataMahasiswa() { Connection con = Koneksi.getKoneksi(); String query = "SELECT * FROM m_mahasiswa"; Statement st = null; ResultSet rs = null; List list = new ArrayList<>(); try{ st = con.createStatement(); rs = st.executeQuery(query); while(rs.next()){ list.add(new Mahasiswa(rs.getLong("id_mahasiswa"), rs.getString("nim"), rs.getString("nama"), rs.getString("ttl"), rs.getString("jurusan"), rs.getString("alamat"))); } }catch(SQLException ex){ ex.printStackTrace(); }finally{ try{ if(con!=null){ con.close(); } if(st!=null){ st.close(); } if(rs!=null){ rs.close(); } }catch(SQLException ex){ ex.printStackTrace(); } } return list; } }
package com.community.view; import com.community.controller.ControllerPrinting; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class ViewPrinting extends JFrame implements ActionListener{ private ControllerPrinting cp; private JTable tabel; private DefaultTableModel model; private JButton cetak; public ViewPrinting() { setTitle("Contoh Printing Jasper Report"); setSize(1000, 500); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); setResizable(false); userInterface(); cp = new ControllerPrinting(this); } private void userInterface(){ JPanel panelHeader = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 10)); JLabel header = new JLabel("Data Mahasiswa"); header.setHorizontalAlignment(JLabel.CENTER); header.setVerticalAlignment(JLabel.CENTER); header.setFont(new Font("Arial", Font.PLAIN, 20)); panelHeader.add(header); getContentPane().add(panelHeader, BorderLayout.NORTH); model = new DefaultTableModel(); model.setColumnIdentifiers(new Object[]{ "NIM", "Nama", "Tempat, Tanggal Lahir", "Alamat", "Jurusan" }); tabel = new JTable(model); getContentPane().add(new JScrollPane(tabel)); JPanel panelButton = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 10)); cetak = new JButton("Cetak"); cetak.addActionListener(this); panelButton.add(cetak); getContentPane().add(panelButton, BorderLayout.SOUTH); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==cetak){ cp.cetakLaporan(); } } public DefaultTableModel getModel() { return model; } }
Membuat class AppMain untuk dijadikan sebagai MainClass.
package com.community.view; public class AppMain { public static void main(String[] args) { ViewPrinting obj = new ViewPrinting(); obj.setVisible(true); } }
package com.community.controller; import com.community.entity.Mahasiswa; import com.community.sql.IMahasiswa; import com.community.sql.MahasiswaSQL; import com.community.view.ViewPrinting; import java.io.File; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; import net.sf.jasperreports.engine.JRException; import net.sf.jasperreports.engine.JasperCompileManager; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.design.JasperDesign; import net.sf.jasperreports.engine.xml.JRXmlLoader; import net.sf.jasperreports.view.JasperViewer; public class ControllerPrinting { private ViewPrinting view; private Listlist = new ArrayList<>(); public ControllerPrinting(ViewPrinting view) { this.view = view; getDataMahasiswa(); } private void getDataMahasiswa(){ IMahasiswa sql = new MahasiswaSQL(); list = sql.getDataMahasiswa(); for(Mahasiswa obj : list){ view.getModel().addRow(new Object[]{ obj, obj.getNama(), obj.getTtl(), obj.getAlamat(), obj.getJurusan() }); } } public void cetakLaporan(){ try { String path = "report/laporan.jrxml"; JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list); File file = new File(path); JasperDesign jasperDesign = JRXmlLoader.load(file); JasperReport report = JasperCompileManager.compileReport(jasperDesign); JasperPrint print = JasperFillManager.fillReport(report, null, dataSource); JasperViewer.viewReport(print, false); } catch (JRException ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(null, "Gagal Mencetak Laporan"); } } }
Catatan :
Hasil output dari contoh program ireport diatas sebagai berikut :
Cara menampilkan laporan di netbeans, anda perlu klik button Cetak. Berikut ini tampilan laporan Jasper Report.
Catatan :
IReport tidak mendukung Java 8 atau diatasnya, bagi kalian yang menggunakan Java 8 atau diatasnya maka yang perlu dilakukan adalah Meng-install Java 7.
Bagi kalian yang ireport tidak bisa tampil, pastikan path-nya sudah benar.
Untuk source code cara membuat laporan di java netbeans seperti diatas, anda bisa download disini dan database-nya disini
Sekian tutorial membuat laporan dengan jasperreport, silahkan tinggalkan komentar jika ada kendala dalam mengikuti tutorial diatas. Semoga bermanfaat.
0 Response to "Cara Membuat Report di Java dengan JasperReport"
Posting Komentar