JasperReports-এ রিপোর্ট তৈরি করতে হলে, JRXML ফাইলটি প্রথমে একটি JasperReport ফাইলে রূপান্তর করতে হয়। এই প্রক্রিয়াকে JasperReports Compilation Process বলা হয়। JRXML হল XML ফরম্যাটে রিপোর্টের ডিজাইন ফাইল, যেখানে রিপোর্টের কাঠামো, ফিল্ড, প্যারামিটার, ভ্যারিয়েবল, স্টাইল এবং অন্যান্য কনফিগারেশন থাকে। JasperReport হল কম্পাইল করা রিপোর্ট ফাইল যা JRXML থেকে তৈরি হয় এবং তা JasperPrint-এ রূপান্তরিত হয়ে রেন্ডার বা এক্সপোর্ট করা যায়।
JasperReports Compilation Process Overview
- JRXML File Creation:
- প্রথমে আপনি একটি JRXML ফাইল তৈরি করেন যা রিপোর্টের ডিজাইন এবং ডেটার কাঠামো নির্ধারণ করে। এটি XML ফরম্যাটে লেখা হয়।
- Compile JRXML to JasperReport:
- JRXML ফাইলটি কম্পাইল করা হয় JasperReports লাইব্রেরির মাধ্যমে একটি JasperReport ফাইলে, যেটি একটি বাইনারি ফাইল। এই কম্পাইলেশন প্রক্রিয়া JasperCompileManager.compileReport() মেথডের মাধ্যমে সম্পন্ন হয়।
- Fill Report with Data:
- একবার JasperReport তৈরি হলে, ডেটা JasperFillManager.fillReport() মেথডের মাধ্যমে রিপোর্টে যোগ করা হয়, যেখানে data source প্রদান করা হয় (যেমন: JDBC, CSV, JavaBeans, XML)।
- Export Report to Desired Format:
- রিপোর্টটি JasperPrint-এ পূর্ণাঙ্গভাবে তৈরি হলে, সেটি বিভিন্ন আউটপুট ফরম্যাটে এক্সপোর্ট করা যেতে পারে, যেমন PDF, Excel, HTML, CSV ইত্যাদি।
1. JRXML ফাইল তৈরি করা (Report Design)
JRXML ফাইলটি একটি XML ফরম্যাটে থাকে যা রিপোর্টের ডিজাইন এবং কনফিগারেশন ধারণ করে। এটি JasperReports Studio ব্যবহার করে সহজেই তৈরি করা যায়। একটি সাধারণ JRXML ফাইলের উদাহরণ নিম্নরূপ:
<?xml version="1.0" encoding="UTF-8"?>
<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="EmployeeReport" language="java" pageWidth="595" pageHeight="842" columnWidth="515"
leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Parameters -->
<parameter name="StartDate" class="java.util.Date"/>
<parameter name="EndDate" class="java.util.Date"/>
<!-- Fields -->
<field name="employee_name" class="java.lang.String"/>
<field name="employee_age" class="java.lang.Integer"/>
<!-- Title -->
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="515" height="50"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Employee Report]]></text>
</staticText>
</band>
</title>
<!-- Column Header -->
<columnHeader>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="170" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Name]]></text>
</staticText>
<staticText>
<reportElement x="170" y="0" width="170" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Age]]></text>
</staticText>
</band>
</columnHeader>
<!-- Detail -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="170" y="0" width="170" height="20"/>
<textFieldExpression><![CDATA[$F{employee_age}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
এখানে JRXML ফাইলটি রিপোর্টের টাইটেল, কলাম হেডার এবং ডিটেইলস এর জন্য কনফিগারেশন ধারণ করে। এখানে fields (employee_name, employee_age), parameters (StartDate, EndDate), এবং band sections (Title, Column Header, Detail) রয়েছে।
2. JRXML থেকে JasperReport কম্পাইল করা
JRXML ফাইলটি JasperReport ফাইলে রূপান্তর করতে JasperCompileManager.compileReport() মেথড ব্যবহার করা হয়। এটি একটি JasperReport অবজেক্ট তৈরি করে, যা রিপোর্টের কম্পাইল করা ফাইল।
Compilation Example:
import net.sf.jasperreports.engine.*;
public class JasperReportCompilation {
public static void main(String[] args) {
try {
// Compile the JRXML file into a JasperReport object
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");
System.out.println("Report compiled successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
JasperCompileManager.compileReport() মেথডটি JRXML ফাইলকে JasperReport ফাইলে রূপান্তরিত করে। এখন রিপোর্টটি পূর্ণাঙ্গভাবে JasperPrint-এ রূপান্তরিত করার জন্য প্রস্তুত।
3. JasperReport ফিল করা (Filling the Report with Data)
JasperReport কম্পাইল করা হলে, আপনি JasperFillManager.fillReport() মেথড ব্যবহার করে রিপোর্টে ডেটা ফিল করতে পারেন। এই মেথডটি রিপোর্টে ডেটা সোর্স (যেমন: JDBC, JavaBeans, CSV) থেকে ডেটা নিয়ে রিপোর্টে যুক্ত করে।
Filling the Report Example:
import net.sf.jasperreports.engine.*;
import java.util.*;
public class JasperReportFilling {
public static void main(String[] args) {
try {
// Compile the JRXML file into a JasperReport object
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");
// Parameters to be passed to the report (if any)
Map<String, Object> parameters = new HashMap<>();
parameters.put("StartDate", new Date());
parameters.put("EndDate", new Date());
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
System.out.println("Report filled with data successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
JasperFillManager.fillReport() মেথডে parameters এবং data source (যেমন JREmptyDataSource, JDBC Connection, JavaBeans, ইত্যাদি) পাঠানো হয়। এটি JasperPrint অবজেক্ট তৈরি করে, যা পরবর্তী ধাপে export বা view করা যেতে পারে।
4. JasperReport Export (Excel, PDF, etc.)
একবার রিপোর্ট পূর্ণাঙ্গভাবে JasperPrint-এ রূপান্তরিত হলে, আপনি সেটি PDF, Excel, HTML, বা CSV ফরম্যাটে এক্সপোর্ট করতে পারেন। JasperReports এক্সপোর্টের জন্য বিভিন্ন exporters সরবরাহ করে।
Export to PDF Example:
import net.sf.jasperreports.engine.*;
public class JasperReportExport {
public static void main(String[] args) {
try {
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JREmptyDataSource());
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "output/report.pdf");
System.out.println("Report exported to PDF successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
Export to Excel Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class JasperReportExcelExport {
public static void main(String[] args) {
try {
// Compile the report
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your_report.jrxml");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, new JREmptyDataSource());
// Export the report to Excel
JRExcelExporter exporter = new JRExcelExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "output/report.xlsx");
exporter.exportReport();
System.out.println("Report exported to Excel successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
- JRXML ফাইলটি প্রথমে JasperReport ফাইলে কম্পাইল করা হয়, তারপর রিপোর্টে ডেটা ফিল করা হয় এবং শেষে রিপোর্টটি বিভিন্ন আউটপুট ফরম্যাটে এক্সপোর্ট করা হয়।
- JasperReports কম্পাইলেশন প্রক্রিয়াটি আপনার রিপোর্টের ডিজাইন ও কনফিগারেশন ফাইলকে কার্যকরী রিপোর্টে রূপান্তরিত করে।
- আপনি JasperCompileManager.compileReport() মেথডের মাধ্যমে JRXML ফাইলকে JasperReport ফাইলে রূপান্তর করতে পারেন, তারপর JasperFillManager.fillReport() দিয়ে ডেটা যোগ করে JasperExportManager ব্যবহার করে রিপোর্ট এক্সপোর্ট করতে পারেন।
Read more