Jasper Report - Lihat & Cetak Laporan

Output dari proses pengisian laporan objek JasperPrint dapat dilihat menggunakan komponen penampil bawaan , atau dicetak, atau diekspor ke format dokumen yang lebih populer seperti PDF, HTML, RTF, XLS, ODT, CSV, atau XML. Melihat dan mencetak dokumen Jasper akan dibahas dalam bab ini dan mengekspor akan dibahas di bab berikutnya yaitu 'Laporan Ekspor.'

Melihat Laporan

JasperReport menyediakan penampil built-in untuk melihat laporan yang dihasilkan dalam format aslinya. Ini adalah komponen berbasis ayunan dan aplikasi Java lainnya dapat mengintegrasikan komponen ini tanpa harus mengekspor dokumen ke format lain agar dapat dilihat atau dicetak. Kelas net.sf.jasperreports.view.JRViewer mewakili komponen visual ini. Kelas ini juga dapat disesuaikan sesuai kebutuhan aplikasi, dengan mengelompokkannya menjadi sub.

JasperReports juga memiliki aplikasi Swing, yang menggunakan komponen visual untuk melihat laporan. Aplikasi ini membantu untuk melihat laporan dalam format yang sama seperti * .jrprint diproduksi. Aplikasi Swing ini diimplementasikan di kelas net.sf.jasperreports.view.JasperViewer . Untuk melihat laporan menggunakan kelas ini, kita perlu membungkusnya menjadi target ANT.

Melihat Laporan yang dihasilkan

Contoh berikut menunjukkan - cara melihat laporan menggunakan kelas JasperViewer -

Mari menulis template laporan. Isi file JRXML (C: \ tools \ jasperreports-5.0.1 \ test \ jasper_report_template.jrxml) seperti yang diberikan di bawah ini -

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
   "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">

<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 = "jasper_report_template" language = "groovy" pageWidth = "595"
   pageHeight = "842" columnWidth = "555" leftMargin = "20" rightMargin = "20"
   topMargin = "20" bottomMargin = "20">

   <queryString>
      <![CDATA[]]>
   </queryString>
   
   <field name = "country" class = "java.lang.String">
      <fieldDescription><![CDATA[country]]></fieldDescription>
   </field>
   
   <field name = "name" class = "java.lang.String">
      <fieldDescription><![CDATA[name]]></fieldDescription>
   </field>
   
   <columnHeader>
      <band height = "23">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "3" 
               width = "535" height = "15" backcolor = "#70A9A9" />
            
            <box>
               <bottomPen lineWidth = "1.0" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
            <text><![CDATA[]]> </text>
         </staticText>
         
         <staticText>
            <reportElement x = "414" y = "3" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            <text><![CDATA[Country]]></text>
         </staticText>
         
         <staticText>
            <reportElement x = "0" y = "3" width = "136" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font isBold = "true" />
            </textElement>
            <text><![CDATA[Name]]></text>
         </staticText>
      
      </band>
   </columnHeader>
   
   <detail>
      <band height = "16">
         
         <staticText>
            <reportElement mode = "Opaque" x = "0" y = "0" 
               width = "535" height = "14" backcolor = "#E5ECF9" />
            
            <box>
               <bottomPen lineWidth = "0.25" lineColor = "#CCCCCC" />
            </box>
            
            <textElement />
            <text><![CDATA[]]> </text>
         </staticText>
         
         <textField>
            <reportElement x = "414" y = "0" width = "121" height = "15" />
            
            <textElement textAlignment = "Center" verticalAlignment = "Middle">
               <font size = "9" />
            </textElement>
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{country}]]>
            </textFieldExpression>
         </textField>
         
         <textField>
            <reportElement x = "0" y = "0" width = "136" height = "15" />
            <textElement textAlignment = "Center" verticalAlignment = "Middle" />
            
            <textFieldExpression class = "java.lang.String">
               <![CDATA[$F{name}]]>
            </textFieldExpression>
         </textField>
      
      </band>
   </detail>
	
</jasperReport>

Selanjutnya, mari teruskan kumpulan objek data Java (kacang Java), ke Mesin JasperReports, untuk mengisi laporan yang telah dikompilasi ini.

Tulis POJO DataBean.java, yang mewakili objek data (kacang Java). Kelas ini mendefinisikan dua objek String yaitu 'name' dan 'country.' Simpan ke direktoriC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint.

package com.tutorialspoint;

public class DataBean {
   private String name;
   private String country;

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public String getCountry() {
      return country;
   }

   public void setCountry(String country) {
      this.country = country;
   }
}

Tulis kelas DataBeanList.java, yang memiliki logika bisnis untuk menghasilkan kumpulan objek kacang java. Ini selanjutnya diteruskan ke mesin JasperReports, untuk menghasilkan laporan. Di sini, kami menambahkan 4 objek DataBean dalam Daftar. Simpan ke direktoriC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint.

package com.tutorialspoint;

import java.util.ArrayList;

public class DataBeanList {
   public ArrayList<DataBean> getDataBeanList() {
      ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();

      dataBeanList.add(produce("Manisha", "India"));
      dataBeanList.add(produce("Dennis Ritchie", "USA"));
      dataBeanList.add(produce("V.Anand", "India"));
      dataBeanList.add(produce("Shrinath", "California"));

      return dataBeanList;
   }

   /**
    * This method returns a DataBean object,
    * with name and country set in it.
    */
   private DataBean produce(String name, String country) {
      DataBean dataBean = new DataBean();
      dataBean.setName(name);
      dataBean.setCountry(country);
      
      return dataBean;
   }
}

Tulis file kelas utama JasperReportFill.java, yang mendapatkan koleksi kacang java dari kelas (DataBeanList) dan meneruskannya ke mesin JasperReports, untuk mengisi template laporan. Simpan ke direktoriC:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint.

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class JasperReportFill {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      String sourceFileName = 
         "c://tools/jasperreports-5.0.1/test/jasper_report_template.jasper";
      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();

      JRBeanCollectionDataSource beanColDataSource = new 
         JRBeanCollectionDataSource(dataList);

      Map parameters = new HashMap();
      try {
         JasperFillManager.fillReportToFile( 
            sourceFileName, parameters, beanColDataSource);
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

Ayo tulis target viewFillReportke file build.xml. File build.xml adalah sebagai berikut -

File impor - baseBuild.xml diambil dari bab Pengaturan Lingkungan dan harus ditempatkan di direktori yang sama dengan build.xml.

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "viewFillReport" basedir = ".">
   <import file = "baseBuild.xml"/>

   <target name = "viewFillReport" depends = "compile,compilereportdesing,run"
      description = "Launches the report viewer
      to preview the report stored in the .JRprint file.">
      
      <java classname = "net.sf.jasperreports.view.JasperViewer" fork = "true">
         <arg value = "-F${file.name}.JRprint" />
         <classpath refid = "classpath" />
      </java>
   </target>
   
   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">
      
      <taskdef name = "jrc"
         classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath" />
      </taskdef>
      
      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml" />
            </fileset>
         </src>
         <classpath refid = "classpath" />
      </jrc>
   
   </target>
	
</project>

Selanjutnya, buka jendela baris perintah dan buka direktori tempat build.xml ditempatkan. Terakhir, jalankan perintah ant -Dmain-class=com.tutorialspoint.JasperReportFill(viewFillReport adalah target default). Akibatnya, kita melihat jendela JasperViewer seperti yang ditunjukkan pada layar di bawah ini -

Mencetak Laporan

Kita dapat mencetak dokumen yang dihasilkan oleh perpustakaan JasperReports (dalam format kepemilikannya yaitu objek JasperPrint ) menggunakan kelas net.sf.jasperreports.engine.JasperPrintManager . Ini adalah kelas fasad yang bergantung pada Java 2 Printing API. Kami juga dapat mencetak dokumen setelah dokumen JasperReport diekspor ke format lain seperti HTML atau PDF.

Mencetak Laporan yang Dihasilkan

Kode berikut menunjukkan pencetakan laporan. Mari perbarui kelas JasperReportFill yang sudah ada. Kami akan menggunakan metode JasperPrintManager.printReport () . Metode ini mengambil nama file sumber (di sini kita meneruskan file .jrprint , yang kita buat pada langkah sebelumnya menggunakan metode JasperFillManager.fillReportToFile ()) sebagai parameter pertama. Parameter kedua adalah boolean untuk menampilkan dialog print standar (sudah kita setel ketrue sini).

package com.tutorialspoint;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrintManager;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;

public class JasperReportFill {
   @SuppressWarnings("unchecked")
   public static void main(String[] args) {
      String sourceFileName = "c://tools/jasperreports-5.0.1/" +
         "test/jasper_report_template.jasper";
      String printFileName = null;
      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> dataList = DataBeanList.getDataBeanList();

      JRBeanCollectionDataSource beanColDataSource = new 
         JRBeanCollectionDataSource(dataList);

      Map parameters = new HashMap();
      try {
    	   printFileName = JasperFillManager.fillReportToFile( 
            sourceFileName, parameters, beanColDataSource);
         if(printFileName != null){
            JasperPrintManager.printReport( printFileName, true);
         }
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

Sekarang, mari simpan file ini ke direktori C:\tools\jasperreports-5.0.1\test\src\com\tutorialspoint. Kami akan mengkompilasi dan mengeksekusi file ini menggunakan ANT. Isi build.xml seperti yang diberikan di bawah ini -

<?xml version = "1.0" encoding = "UTF-8"?>
<project name = "JasperReportTest" default = "executereport" basedir = ".">
   <import file = "baseBuild.xml"/>

   <target name = "executereport" depends = "compile,compilereportdesing,run">
      <echo message = "Im here"/>
   </target>
   
   <target name = "compilereportdesing" description = "Compiles the JXML file and
      produces the .jasper file.">
      
      <taskdef name = "jrc"
         classname = "net.sf.jasperreports.ant.JRAntCompileTask">
         <classpath refid = "classpath" />
      </taskdef>
      
      <jrc destdir = ".">
         <src>
            <fileset dir = ".">
               <include name = "*.jrxml" />
            </fileset>
         </src>
         <classpath refid = "classpath" />
      </jrc>
		
   </target>
	
</project>

Selanjutnya, buka command prompt dan masuk ke direktori tempat build.xml ditempatkan. Terakhir, jalankan perintahant -Dmain-class=com.tutorialspoint.JasperReportPrint. Hasilnya, kotak dialog cetak muncul. Klik ok untuk mencetak dokumen.