JasperReports বিভিন্ন ধরনের রিপোর্ট তৈরি করার জন্য বিভিন্ন আউটপুট ফরম্যাট সমর্থন করে। JasperReports ব্যবহারকারীকে গ্রাফিক্যাল রিপোর্ট তৈরি, ডাটা সূত্রে ডেটা একত্রিত করা এবং সেই ডেটাকে বিভিন্ন আউটপুট ফরম্যাটে এক্সপোর্ট করার সুযোগ দেয়। এই ফরম্যাটগুলি ব্যবসায়িক ব্যবহারের জন্য খুবই উপকারী, যেমন PDF, Excel, HTML, CSV, RTF ইত্যাদি।
JasperReports এর প্রধান আউটপুট ফরম্যাট
- PDF (Portable Document Format)
- Excel (XLS, XLSX)
- HTML (Hypertext Markup Language)
- CSV (Comma Separated Values)
- XML (eXtensible Markup Language)
- RTF (Rich Text Format)
- ODT (OpenDocument Text)
- Text (Plain Text)
1. PDF (Portable Document Format)
- PDF হলো সবচেয়ে জনপ্রিয় আউটপুট ফরম্যাট যা ব্যবহারকারীদেরকে একটি প্রিন্টযোগ্য ফাইল দেয় যা ডিভাইসের সাথে সামঞ্জস্যপূর্ণ।
- এটি গ্রাফিক্স, ছবি, টেবিল, চার্ট ইত্যাদি সহজে হ্যান্ডল করে।
- PDF আউটপুট সাধারণত রিপোর্টের চূড়ান্ত এবং প্রিন্টযোগ্য ফরম্যাট হিসেবে ব্যবহৃত হয়।
PDF Export Example:
import net.sf.jasperreports.engine.*;
public class JasperReportsPDFExample {
public static void main(String[] args) throws JRException {
// Fill the report with data (assuming JRXML is compiled into JasperReport)
JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper", null, new JREmptyDataSource());
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "report_output.pdf");
}
}
2. Excel (XLS, XLSX)
- Excel ফরম্যাটে রিপোর্ট তৈরি করা হয় যাতে ব্যবহারকারীরা রিপোর্ট ডাউনলোড এবং ফিল্টার করতে পারেন। এটি বিশেষভাবে ব্যবহার করা হয় যখন রিপোর্টে বড় পরিমাণে ডেটা থাকে।
- JasperReports XLS এবং XLSX ফরম্যাটে এক্সপোর্ট করতে সক্ষম, যা Microsoft Excel এবং অন্যান্য স্প্রেডশীট সফটওয়্যার দ্বারা সমর্থিত।
Excel Export Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class JasperReportsExcelExample {
public static void main(String[] args) throws JRException {
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper", null, new JREmptyDataSource());
// Excel export configuration
JRXlsExporter exporter = new JRXlsExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("report_output.xlsx"));
exporter.exportReport();
}
}
3. HTML (Hypertext Markup Language)
- HTML ফরম্যাটে রিপোর্ট তৈরি করা হয় যাতে রিপোর্টগুলো ওয়েব ব্রাউজারে দেখানো যায়। HTML ফরম্যাটে এক্সপোর্ট করা রিপোর্টে টেবিল, ছবির সাথে অন্যান্য গ্রাফিক্যাল উপাদানগুলি অন্তর্ভুক্ত থাকে।
- HTML ফরম্যাটটি সাধারণত রিপোর্টের প্রিভিউ বা ওয়েব অ্যাপ্লিকেশনের জন্য ব্যবহার করা হয়।
HTML Export Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class JasperReportsHTMLExample {
public static void main(String[] args) throws JRException {
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper", null, new JREmptyDataSource());
// HTML export configuration
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleHtmlExporterOutput("report_output.html"));
exporter.exportReport();
}
}
4. CSV (Comma Separated Values)
- CSV ফরম্যাটটি রিপোর্টের ডেটা সিম্পল টেক্সট ফরম্যাটে উপস্থাপন করে, যেখানে প্রতিটি ডেটা ভ্যালু কমা দিয়ে পৃথক করা হয়।
- এটি সাধারণত বিশাল পরিমাণ ডেটা ধারণ করতে ব্যবহৃত হয় এবং সহজেই অন্যান্য সফটওয়্যার বা ডেটাবেসে এক্সপোর্ট করা যায়।
CSV Export Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class JasperReportsCSVExample {
public static void main(String[] args) throws JRException {
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper", null, new JREmptyDataSource());
// CSV export configuration
JRCsvExporter exporter = new JRCsvExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleWriterExporterOutput("report_output.csv"));
exporter.exportReport();
}
}
5. XML (eXtensible Markup Language)
- XML ফরম্যাটটি ডেটা পরিবহণ এবং স্টোরেজের জন্য ব্যবহৃত হয়। এটি বিশাল ডেটা সেটের জন্য খুবই উপকারী, যেখানে প্রতিটি ফিল্ড এবং তার মান XML ট্যাগের মধ্যে সংরক্ষিত হয়।
- XML আউটপুট ফরম্যাটটি বিশেষত ডেটা এক্সচেঞ্জ এবং ইন্টিগ্রেশনের জন্য ব্যবহৃত হয়।
XML Export Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class JasperReportsXMLExample {
public static void main(String[] args) throws JRException {
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper", null, new JREmptyDataSource());
// XML export configuration
JRXmlExporter exporter = new JRXmlExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleXmlExporterOutput("report_output.xml"));
exporter.exportReport();
}
}
6. RTF (Rich Text Format)
- RTF ফরম্যাট হল একটি টেক্সট ফরম্যাট যা ফরম্যাটিং সহ কন্টেন্ট ধারণ করে। RTF সাধারণত মাইক্রোসফট ওয়ার্ডে খোলার জন্য ব্যবহৃত হয়, এবং এটি ধরণের ডকুমেন্ট কন্টেন্ট এক্সপোর্টে ব্যবহৃত হতে পারে।
RTF Export Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class JasperReportsRTFExample {
public static void main(String[] args) throws JRException {
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport("report.jasper", null, new JREmptyDataSource());
// RTF export configuration
JRRtfExporter exporter = new JRRtfExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleWriterExporterOutput("report_output.rtf"));
exporter.exportReport();
}
}
7. ODT (OpenDocument Text)
- ODT ফরম্যাটটি OpenOffice বা LibreOffice দ্বারা ব্যবহৃত হয়। এটি একটি ওপেন সোর্স ডকুমেন্ট ফরম্যাট যা একইভাবে RTF এর মতো ব্যবহার করা যেতে পারে, তবে এটি ওপেন সোর্স ডকুমেন্ট স্যুটের জন্য ব্যবহৃত হয়।
JasperReports এর ফরম্যাট নির্বাচনের জন্য কিছু টিপস
- Data Sensitivity:
- যদি ডেটা সিকিউরিটি গুরুত্বপূর্ণ হয়, যেমন ব্যাংকিং বা আইনগত ডেটা, PDF ব্যবহার করা সবচেয়ে ভাল। এটি ডেটার অখণ্ডতা রক্ষা করে।
- User Interaction:
- HTML এবং CSV ফরম্যাটের ক্ষেত্রে ব্যবহারকারীদের কাছে ডেটা সহজে পড়া এবং প্রক্রিয়া করার সুবিধা থাকে।
- Large Datasets:
- যখন বিশাল ডেটাসেট থাকে, তখন CSV বা XML ফরম্যাট বেশি সুবিধাজনক, কারণ এগুলি সহজে পার্স করা যায় এবং বড় ডেটা এক্সপোর্ট করতে সক্ষম।
- Business Reporting:
- Excel (XLS/XLSX) এবং PDF ফরম্যাটগুলি ব্যবসায়িক রিপোর্টে বেশি ব্যবহৃত হয়, যেখানে গ্রাফ এবং টেবিলের মাধ্যমে তথ্য প্রদর্শন করা হয়।
JasperReports বিভিন্ন ধরনের আউটপুট ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে সক্ষম, যেমন PDF, Excel, HTML, CSV, XML, RTF, ODT ইত্যাদি। আপনি আপনার প্রয়োজন অনুযায়ী একটি উপযুক্ত ফরম্যাট নির্বাচন করে রিপোর্ট এক্সপোর্ট করতে পারেন। JasperReports এর ব্যবহারযোগ্যতা, কাস্টমাইজেশন এবং এক্সপোর্ট অপশন সিস্টেম ডেভেলপমেন্ট এবং ব্যবসায়িক প্রয়োজনে বিশেষভাবে কার্যকর।
JasperReports হল একটি শক্তিশালী ওপেন সোর্স Java রিপোর্টিং লাইব্রেরি, যা বিভিন্ন আউটপুট ফরম্যাটে রিপোর্ট তৈরি করার ক্ষমতা প্রদান করে। আপনি রিপোর্টগুলি PDF, Excel, HTML, CSV সহ বিভিন্ন ফরম্যাটে এক্সপোর্ট করতে পারেন। JasperReports এর মাধ্যমে বিভিন্ন আউটপুট ফরম্যাটে রিপোর্ট তৈরি করতে, আপনি সহজেই রিপোর্ট কম্পাইল এবং এক্সপোর্ট করতে পারেন।
এখানে, আমরা PDF, Excel, HTML, এবং CSV আউটপুট ফরম্যাট তৈরির জন্য বিভিন্ন উদাহরণ দেখব।
1. PDF আউটপুট ফরম্যাট
PDF আউটপুট হল JasperReports-এ একটি অত্যন্ত জনপ্রিয় ফরম্যাট, বিশেষত ফর্ম্যাটেড রিপোর্ট তৈরি করার জন্য। JasperReports আপনাকে PDF ফাইল হিসাবে রিপোর্ট এক্সপোর্ট করতে সহায়তা করে, যেখানে আপনি টেবিল, চার্ট, টেক্সট ইত্যাদি সব কিছু সুন্দরভাবে প্রদর্শন করতে পারবেন।
PDF আউটপুটের জন্য উদাহরণ:
import net.sf.jasperreports.engine.*;
public class JasperReportsPDFExample {
public static void main(String[] args) throws JRException {
String reportPath = "path/to/your/report.jasper"; // Path to the compiled Jasper file
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Fill the report with data (empty map in this case)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<>());
// Export the report to a PDF file
JasperExportManager.exportReportToPdfFile(jasperPrint, "output_report.pdf");
}
}
Output:
- এটি
output_report.pdfনামক একটি PDF ফাইল তৈরি করবে যা রিপোর্টের কন্টেন্ট ধারণ করবে।
2. Excel (XLS/XLSX) আউটপুট ফরম্যাট
Excel আউটপুট JasperReports-এ খুবই জনপ্রিয়, কারণ এটি ব্যবহারকারীদের ডেটা বিশ্লেষণ এবং কাস্টমাইজড ফিল্টারিং করতে সক্ষম করে। JasperReports XLS এবং XLSX উভয় ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে পারে।
Excel আউটপুটের জন্য উদাহরণ (XLS):
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class JasperReportsExcelExample {
public static void main(String[] args) throws JRException {
String reportPath = "path/to/your/report.jasper"; // Path to the compiled Jasper file
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Fill the report with data (empty map in this case)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<>());
// Setup Excel export parameters
JRXlsExporter exporter = new JRXlsExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("output_report.xlsx"));
// Export the report to Excel (XLSX)
exporter.exportReport();
}
}
Output:
- এটি
output_report.xlsxনামক একটি Excel ফাইল তৈরি করবে।
3. HTML আউটপুট ফরম্যাট
HTML আউটপুট ব্যবহার করে আপনি রিপোর্টটিকে ওয়েব পৃষ্ঠার মধ্যে সুন্দরভাবে উপস্থাপন করতে পারেন। JasperReports HTML আউটপুট তৈরি করতে সহজে সক্ষম, যা আপনি ওয়েব অ্যাপ্লিকেশন বা ব্রাউজারে দেখতে পারেন।
HTML আউটপুটের জন্য উদাহরণ:
import net.sf.jasperreports.engine.*;
public class JasperReportsHTMLExample {
public static void main(String[] args) throws JRException {
String reportPath = "path/to/your/report.jasper"; // Path to the compiled Jasper file
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Fill the report with data (empty map in this case)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<>());
// Export the report to an HTML file
JasperExportManager.exportReportToHtmlFile(jasperPrint, "output_report.html");
}
}
Output:
- এটি
output_report.htmlনামক একটি HTML ফাইল তৈরি করবে, যা ব্রাউজারে দেখা যাবে।
4. CSV আউটপুট ফরম্যাট
CSV (Comma-Separated Values) ফরম্যাটটি ডেটা এক্সপোর্টের জন্য একটি সাধারণ এবং সহজ পদ্ধতি। এটি সাধারণত ডেটা বিশ্লেষণ বা অন্য কোন ডেটা সিস্টেমে ইমপোর্ট করার জন্য ব্যবহৃত হয়।
CSV আউটপুটের জন্য উদাহরণ:
import net.sf.jasperreports.engine.*;
public class JasperReportsCSVExample {
public static void main(String[] args) throws JRException {
String reportPath = "path/to/your/report.jasper"; // Path to the compiled Jasper file
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Fill the report with data (empty map in this case)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap<>());
// Export the report to a CSV file
JasperExportManager.exportReportToCsvFile(jasperPrint, "output_report.csv");
}
}
Output:
- এটি
output_report.csvনামক একটি CSV ফাইল তৈরি করবে, যা বিভিন্ন ডেটা ফিল্ডের মধ্যে কমা দিয়ে আলাদা হবে।
JasperReports এর মাধ্যমে এক্সপোর্টের সুবিধা
- PDF:
- Portable এবং Professional ফরম্যাট।
- অতি জনপ্রিয় ফরম্যাট যা প্রিন্টিং এবং শেয়ারিং এর জন্য উপযুক্ত।
- Excel (XLS/XLSX):
- Data Analysis এবং Spreadsheet operations এর জন্য উপযুক্ত।
- আপনি Excel এ সহজেই ডেটা সম্পাদনা এবং বিশ্লেষণ করতে পারবেন।
- HTML:
- Web-Based রিপোর্ট তৈরি করার জন্য উপযুক্ত।
- ব্রাউজারে সহজেই ভিউ করা যায়।
- CSV:
- Data Exporting জন্য একটি সিম্পল ফরম্যাট।
- অন্যান্য সিস্টেমে Data Import করার জন্য উপযুক্ত।
JasperReports ব্যবহার করে আপনি PDF, Excel, HTML, এবং CSV সহ বিভিন্ন আউটপুট ফরম্যাটে রিপোর্ট তৈরি এবং এক্সপোর্ট করতে পারেন। JasperReports এর মাধ্যমে রিপোর্টের কাস্টমাইজেশন এবং এক্সপোর্টিং অত্যন্ত সহজ, এবং এটি আপনাকে ব্যবসায়িক বিশ্লেষণ এবং ডেটা উপস্থাপনের জন্য শক্তিশালী টুলস সরবরাহ করে। JasperReports বিভিন্ন আউটপুট ফরম্যাটে ডেটা রেন্ডার করার জন্য একটি খুবই উপকারী এবং বিস্তৃত টুল, যা বড় আকারের প্রজেক্ট এবং ডেটা রিপোর্টিং সিস্টেমে ব্যাপকভাবে ব্যবহৃত হয়।
JasperReports ব্যবহার করে রিপোর্ট তৈরি করতে JasperPrint এবং JasperExportManager দুটি প্রধান ক্লাস ব্যবহৃত হয়। JasperPrint রিপোর্টের ফলাফল (output) ধারণ করে এবং JasperExportManager ব্যবহার করে রিপোর্টটি বিভিন্ন ফরম্যাটে (যেমন PDF, HTML, Excel) এক্সপোর্ট করা হয়।
JasperPrint:
- JasperPrint হল সেই অবজেক্ট যা রিপোর্ট ফিল করার পরে তৈরি হয়। এটি রিপোর্টের পৃষ্ঠা এবং কন্টেন্ট ধারণ করে এবং রিপোর্টের আউটপুট হিসেবে ব্যবহৃত হয়।
- এটি মূলত JasperReport অবজেক্টের মাধ্যমে রিপোর্টের জন্য ডেটা পূর্ণ করে এবং পরে JasperExportManager দিয়ে এক্সপোর্ট করা হয়।
JasperExportManager:
- JasperExportManager ক্লাস ব্যবহার করে আপনি JasperPrint অবজেক্ট থেকে রিপোর্টের আউটপুট তৈরি করতে পারেন। এটি পিডিএফ, HTML, Excel, CSV, ইত্যাদি বিভিন্ন ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে সক্ষম।
JasperExportManager এর কিছু সাধারণ ফাংশন:
- exportReportToPdf(): পিডিএফ ফরম্যাটে রিপোর্ট এক্সপোর্ট করে।
- exportReportToHtml(): HTML ফরম্যাটে রিপোর্ট এক্সপোর্ট করে।
- exportReportToCsv(): CSV ফরম্যাটে রিপোর্ট এক্সপোর্ট করে।
- exportReportToXml(): XML ফরম্যাটে রিপোর্ট এক্সপোর্ট করে।
ধাপ ১: JasperReports প্রকল্প সেটআপ
প্রথমে JasperReports এর জন্য প্রয়োজনীয় Maven ডিপেনডেন্সি অন্তর্ভুক্ত করতে হবে:
Maven Dependency for JasperReports:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.17.0</version>
</dependency>
ধাপ ২: JasperReports Template (.jrxml) ডিজাইন
JasperReports এর রিপোর্ট তৈরির জন্য একটি JasperReport Template তৈরি করতে হবে, যেটি .jrxml ফাইল হিসেবে থাকবে। আপনি Jaspersoft Studio বা iReport Designer ব্যবহার করে এই টেমপ্লেট তৈরি করতে পারেন।
Simple JasperReport Example (.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="userReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40"
rightMargin="40" topMargin="40" bottomMargin="40" uuid="b44da7b9-bd07-4ee6-b0a1-c96d6c72a1f3">
<field name="id" class="java.lang.Integer"/>
<field name="name" class="java.lang.String"/>
<field name="email" class="java.lang.String"/>
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="110" y="0" width="150" height="20"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="270" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{email}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
- এই
.jrxmlফাইলে id, name, এবং email ফিল্ড রয়েছে, যা রিপোর্টে প্রদর্শিত হবে।
ধাপ ৩: JasperPrint তৈরি করা
এখন, আপনি JasperReports এর মাধ্যমে JasperPrint তৈরি করতে পারবেন। এটি রিপোর্টের ডিজাইন এবং ডেটার ভিত্তিতে রিপোর্ট তৈরি করে।
JasperPrint তৈরি করার কোড উদাহরণ:
import net.sf.jasperreports.engine.*;
import java.util.*;
public class ReportGenerator {
public static void main(String[] args) {
try {
// Compile the .jrxml file to JasperReport object
JasperReport jasperReport = JasperCompileManager.compileReport("path_to_your_report_template.jrxml");
// Prepare data for the report (usually a database or data source)
Map<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "User Report");
// Use an example data source
List<User> users = getUsers(); // Assume getUsers() fetches user data
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(users);
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export the report (to PDF, for example)
JasperExportManager.exportReportToPdfFile(jasperPrint, "user_report.pdf");
System.out.println("Report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
// A simple method to simulate fetching user data
private static List<User> getUsers() {
List<User> users = new ArrayList<>();
users.add(new User(1, "John Doe", "john@example.com"));
users.add(new User(2, "Jane Smith", "jane@example.com"));
return users;
}
}
User Class (Bean for Data Source):
public class User {
private int id;
private String name;
private String email;
public User(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
// Getters and Setters
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
}
ধাপ ৪: JasperExportManager ব্যবহার করে আউটপুট তৈরি করা
উপরের কোডে, JasperExportManager.exportReportToPdfFile() ব্যবহার করে রিপোর্টটি PDF ফরম্যাটে এক্সপোর্ট করা হচ্ছে। আপনি চাইলে অন্যান্য ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে পারেন যেমন HTML, Excel, CSV ইত্যাদি।
PDF Export:
JasperExportManager.exportReportToPdfFile(jasperPrint, "user_report.pdf");
HTML Export:
JasperExportManager.exportReportToHtmlFile(jasperPrint, "user_report.html");
Excel Export:
JasperExportManager.exportReportToXlsFile(jasperPrint, "user_report.xls");
CSV Export:
JasperExportManager.exportReportToCsvFile(jasperPrint, "user_report.csv");
- JasperPrint: JasperReports-এ রিপোর্টটি ফিলিং এবং রেন্ডার করার জন্য ব্যবহৃত একটি অবজেক্ট। এটি ডেটা, প্যারামিটার এবং রিপোর্ট টেমপ্লেট ধারণ করে।
- JasperExportManager: এটি JasperPrint থেকে রিপোর্ট এক্সপোর্ট করার জন্য ব্যবহৃত হয়। আপনি বিভিন্ন ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে পারেন, যেমন PDF, HTML, Excel, CSV, ইত্যাদি।
- JasperReports Integration: JasperReports সহজেই Java অ্যাপ্লিকেশন এবং Spring Boot অ্যাপ্লিকেশনের সাথে ইন্টিগ্রেট করা যায়। এটি ডেটা সোর্স, প্যারামিটার এবং কাস্টম রিপোর্ট ডিজাইনিংয়ের জন্য অত্যন্ত কার্যকর।
এই প্রক্রিয়ার মাধ্যমে আপনি Java-তে প্রোফেশনাল এবং কাস্টমাইজড রিপোর্ট তৈরি করতে পারবেন যা বিভিন্ন ফরম্যাটে এক্সপোর্ট করা সম্ভব।
JasperReports হল একটি শক্তিশালী রিপোর্টিং লাইব্রেরি যা একাধিক ডেটা সোর্স থেকে রিপোর্ট তৈরি করতে এবং বিভিন্ন ফরম্যাটে এক্সপোর্ট করতে সহায়ক। এটি আপনাকে রিপোর্টকে PDF, HTML, CSV, Excel (XLS), RTF, XML, Text, এবং অন্যান্য ফরম্যাটে এক্সপোর্ট করার সুবিধা দেয়।
এখানে আমরা দেখবো কীভাবে JasperReports ব্যবহার করে একাধিক ফরম্যাটে রিপোর্ট এক্সপোর্ট করা যায়। উদাহরণ হিসাবে, একটি সাধারণ Employee Report তৈরি করে তা বিভিন্ন ফরম্যাটে এক্সপোর্ট করা হবে।
ধাপ ১: JasperReport তৈরি করা
প্রথমে একটি JasperReport তৈরি করা দরকার। এই উদাহরণে, আমরা একটি সাধারণ Employee রিপোর্ট তৈরি করবো এবং এটি বিভিন্ন ফরম্যাটে এক্সপোর্ট করবো।
Employee Report Model (Employee.java)
public class Employee {
private int id;
private String name;
private String department;
// Constructors
public Employee(int id, String name, String department) {
this.id = id;
this.name = name;
this.department = department;
}
// Getters and Setters
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getDepartment() {
return department;
}
}
Employee Report (EmployeeReport.jrxml)
এটি একটি খুবই সাধারণ JasperReports রিপোর্ট। আমরা Employee তথ্যকে তালিকা আকারে দেখাবো।
<?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" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<field name="id" class="java.lang.Integer"/>
<field name="name" class="java.lang.String"/>
<field name="department" class="java.lang.String"/>
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="50" height="20"/>
<textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="60" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="270" y="0" width="150" height="20"/>
<textFieldExpression><![CDATA[$F{department}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
ধাপ ২: Java Code দিয়ে Report তৈরি এবং Export করা
আমরা Java কোড ব্যবহার করে রিপোর্ট তৈরি করবো এবং বিভিন্ন ফরম্যাটে এক্সপোর্ট করবো, যেমন PDF, HTML, Excel, এবং CSV।
Java কোড: JasperReports Report Export
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class JasperReportsExportExample {
public static void main(String[] args) {
try {
// Sample Data
List<Employee> employees = new ArrayList<>();
employees.add(new Employee(1, "John Doe", "HR"));
employees.add(new Employee(2, "Jane Smith", "Finance"));
employees.add(new Employee(3, "Robert Brown", "IT"));
// JRBeanCollectionDataSource for Employee data
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(employees);
// Compile the .jrxml file into a JasperReport
JasperReport jasperReport = JasperCompileManager.compileReport("EmployeeReport.jrxml");
// Parameters for the report (if any)
Map<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Employee Report");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export report to different formats
// Export to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "EmployeeReport.pdf");
System.out.println("PDF Report Exported!");
// Export to HTML
JasperExportManager.exportReportToHtmlFile(jasperPrint, "EmployeeReport.html");
System.out.println("HTML Report Exported!");
// Export to CSV
JasperExportManager.exportReportToCsvFile(jasperPrint, "EmployeeReport.csv");
System.out.println("CSV Report Exported!");
// Export to Excel (XLS)
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "EmployeeReport.xls");
xlsExporter.exportReport();
System.out.println("Excel (XLS) Report Exported!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- Employee Data: আমরা
Employeeক্লাসের একটি লিস্ট তৈরি করেছি এবং তাJRBeanCollectionDataSourceএ প্রদান করেছি, যা রিপোর্টে ডেটা প্রদান করবে। - Report Compilation:
JasperCompileManager.compileReport("EmployeeReport.jrxml")দিয়ে.jrxmlফাইলটি.jasperফরম্যাটে কম্পাইল করা হয়। - Report Filling:
JasperFillManager.fillReport()পদ্ধতির মাধ্যমে রিপোর্টটি ডেটা এবং প্যারামিটার দিয়ে পূর্ণ করা হয়। - Exporting:
JasperExportManager.exportReportToPdfFile(),exportReportToHtmlFile(),exportReportToCsvFile()এবংJRXlsExporterব্যবহার করে বিভিন্ন ফরম্যাটে এক্সপোর্ট করা হয়।
ধাপ ৩: Output ফরম্যাট
- PDF:
EmployeeReport.pdfফাইল তৈরি হবে, যা Adobe Reader বা অন্য কোন PDF ভিউয়ারে দেখতে পারবেন। - HTML:
EmployeeReport.htmlফাইলটি যে কোন ওয়েব ব্রাউজারে দেখা যাবে। - CSV:
EmployeeReport.csvফাইলটি Excel বা অন্য CSV কম্প্যাটিবল সফটওয়্যার দিয়ে খোলা যাবে। - Excel (XLS):
EmployeeReport.xlsফাইলটি Excel এ ওপেন করা যাবে।
- JasperReports আপনাকে একই রিপোর্টকে multiple formats (PDF, HTML, CSV, Excel, etc.) এ এক্সপোর্ট করতে সাহায্য করে।
- Java Code এর মাধ্যমে আপনি রিপোর্ট তৈরির পর সেই রিপোর্টকে বিভিন্ন ফরম্যাটে এক্সপোর্ট করতে পারবেন, যা বিভিন্ন প্ল্যাটফর্মে ব্যবহারের জন্য উপযুক্ত।
- JasperReports-এ বিভিন্ন exporting options সহ subreports, charting, grouping, parameters, ইত্যাদি অন্তর্ভুক্ত করা সম্ভব।
এটি একটি সাধারণ উদাহরণ, এবং আপনি JasperReports এর আরও শক্তিশালী ফিচার যেমন Dynamic Reports, Multiple Datasets, Complex Data Sources, ইত্যাদি ব্যবহার করে আরও জটিল রিপোর্ট তৈরি করতে পারেন।
JasperReports একটি অত্যন্ত ফিচার সমৃদ্ধ রিপোর্ট জেনারেশন লাইব্রেরি যা ডেটা রিপোর্টিং প্রক্রিয়াকে সহজ এবং ফ্লেক্সিবল করে। রিপোর্ট তৈরির সময় Pagination (পাতার সংখ্যা) এবং Subreport ব্যবহারের জন্য কিছু নির্দিষ্ট কনফিগারেশন প্রয়োজন। চলুন, JasperReports-এ Pagination এবং Subreport এর জন্য আউটপুট কনফিগারেশন কীভাবে করা যায় তা আলোচনা করি।
1. Pagination Configuration
Pagination হল একটি ফিচার যা রিপোর্টের ডেটাকে পৃষ্ঠায় ভাগ করে প্রদর্শন করতে সাহায্য করে। এটি বিশেষত তখন প্রয়োজন হয় যখন রিপোর্টে বড় ডেটাসেট থাকে এবং আপনি ডেটা একাধিক পৃষ্ঠায় দেখাতে চান।
JasperReports-এ pagination সেট করতে band, page, এবং column কনফিগারেশন করা হয়। রিপোর্টের পৃষ্ঠা নির্ধারণের জন্য, আপনাকে pageHeader, detail, এবং pageFooter যেমন page number সহ বিভিন্ন band কনফিগার করতে হয়।
Pagination Example:
<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/jasperreports.xsd"
name="PaginationReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<!-- Page Header -->
<pageHeader>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA["Page Header"]]></textFieldExpression>
</textField>
</band>
</pageHeader>
<!-- Detail Section (Where Data is Displayed) -->
<detail>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA[$F{fieldName}]]></textFieldExpression>
</textField>
</band>
</detail>
<!-- Page Footer (Page Number) -->
<pageFooter>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA["Page " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>
</band>
</pageFooter>
</jasperReport>
Pagination Explanation:
- PageHeader: পৃষ্ঠার শিরোনাম, যেখানে আপনি সাধারণত রিপোর্টের নাম বা শিরোনাম দেখাতে পারেন।
- Detail: এখানে রিপোর্টের ডেটা প্রদর্শন করা হয়, যেমন আপনি আপনার ডেটাবেস থেকে পাওয়া ডেটা এখানে দেখাতে পারেন।
- PageFooter: পৃষ্ঠার ফুটার, যেখানে পৃষ্ঠার সংখ্যা বা অন্যান্য তথ্য থাকতে পারে।
PAGE_NUMBERব্যবহার করে পৃষ্ঠার সংখ্যা প্রদর্শন করতে পারেন।
Additional Pagination Controls:
pageBreakBefore: এটি আপনাকে নির্দিষ্ট তথ্যের পর পেজ ব্রেক প্রয়োগ করতে সাহায্য করে।<textField> <reportElement x="0" y="0" width="515" height="50" pageBreakBefore="true"/> <textFieldExpression><![CDATA["Page Break Here"]]></textFieldExpression> </textField>splitType: এটি আপনাকে ডেটা সেগমেন্টের জন্য পেজ স্লিপিং নিয়ন্ত্রণ করতে দেয়। যেমন, এক পৃষ্ঠায় একাধিক রেকর্ড থাকতে পারে।<detail> <band height="20" splitType="Immediate"> <!-- Data content here --> </band> </detail>
2. Subreport Configuration
Subreport হল একটি রিপোর্ট যা মূল রিপোর্টের অংশ হিসেবে অন্তর্ভুক্ত করা হয়। এটি আপনাকে রিপোর্টে অন্যান্য রিপোর্টের আউটপুট যুক্ত করতে সহায়তা করে, যা মূল রিপোর্টের সাথে সম্পর্কিত হতে পারে। সাধারণত One-to-Many relationships বা Complex Data Reporting এর জন্য Subreport ব্যবহৃত হয়।
Subreport Example:
- Main Report:
- প্রথমে মূল রিপোর্ট তৈরি করুন যা Subreport ধারণ করবে।
<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/jasperreports.xsd"
name="MainReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<!-- Main Report Detail Section -->
<detail>
<band height="200">
<subreport>
<reportElement x="0" y="0" width="515" height="200"/>
<subreportExpression><![CDATA["Subreport.jasper"]]></subreportExpression>
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
</subreport>
</band>
</detail>
</jasperReport>
- Subreport:
- তারপর একটি Subreport তৈরি করুন যা মূল রিপোর্টের Detail Section-এ অন্তর্ভুক্ত করা হবে।
<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/jasperreports.xsd"
name="Subreport" pageWidth="515" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<detail>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA["Subreport Data Here"]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
Subreport Explanation:
<subreport>: মূল রিপোর্টে subreport অন্তর্ভুক্ত করার জন্য এই ট্যাগ ব্যবহার করা হয়। এখানেsubreportExpressionদিয়ে subreport ফাইলের নাম দেওয়া হয়।<dataSourceExpression>: Subreport এর জন্য প্রয়োজনীয় ডেটা সোর্স প্রদান করতে হয়। এটি মূল রিপোর্টের ডেটা সোর্স হতে পারে।- Subreport File: Subreport.jasper (যা মূল রিপোর্টের অংশ) এই ফাইলটি কম্পাইলড JRXML ফাইলের আউটপুট। এটি মূল রিপোর্টের মধ্যে অন্তর্ভুক্ত হয়ে কাজ করবে।
3. Subreport Integration via Parameter Passing
Subreport থেকে প্যারামিটার প্রেরণ করতে হলে আপনাকে মূল রিপোর্টে প্যারামিটার সেট করতে হবে এবং Subreport-এ সেই প্যারামিটার ব্যবহার করতে হবে।
Main Report with Parameter Passing:
<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/jasperreports.xsd"
name="MainReport" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<parameter name="SubreportParameter" class="java.lang.String"/>
<detail>
<band height="200">
<subreport>
<reportElement x="0" y="0" width="515" height="200"/>
<subreportExpression><![CDATA["Subreport.jasper"]]></subreportExpression>
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
<!-- Pass Parameter to Subreport -->
<subreportParameter name="SubreportParameter" class="java.lang.String">
<subreportParameterExpression><![CDATA["Parameter Value"]]></subreportParameterExpression>
</subreportParameter>
</subreport>
</band>
</detail>
</jasperReport>
Subreport with Parameter:
<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/jasperreports.xsd"
name="Subreport" pageWidth="515" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="40" bottomMargin="40">
<parameter name="SubreportParameter" class="java.lang.String"/>
<detail>
<band height="50">
<textField>
<reportElement x="0" y="0" width="515" height="50"/>
<textFieldExpression><![CDATA[$P{SubreportParameter}]]></textFieldExpression> <!-- Access Parameter -->
</textField>
</band>
</detail>
</jasperReport>
এখানে, $P{SubreportParameter} এর মাধ্যমে প্যারামিটারকে Subreport এ পাস করা হয়েছে এবং সেখানে তা ব্যবহার করা হয়েছে।
- Pagination: JasperReports-এ pagination কনফিগার করতে pageHeader, detail, এবং pageFooter এর মাধ্যমে পৃষ্ঠার নকশা নিয়ন্ত্রণ করা হয়।
- Subreport: JasperReports-এ Subreport ব্যবহার করার জন্য subreport ট্যাগ ব্যবহার করা হয়, এবং এটি মূল রিপোর্টের অংশ হিসেবে কনফিগার করা হয়।
- Parameter Passing: Subreport-এ প্যারামিটার পাস করার জন্য subreportParameter ট্যাগ ব্যবহার করা হয়, যা Subreport-এ ডেটা পাঠানোর জন্য ব্যবহৃত হয়।
এই কনফিগারেশনগুলোর মাধ্যমে আপনি JasperReports এ pagination এবং subreport-কে সহজে কাস্টমাইজ করতে পারেন।
Read more