JasperReports একটি শক্তিশালী রিপোর্টিং টুল যা Summarization এবং Aggregation ফাংশনগুলো ব্যবহার করে ডেটা উপস্থাপন করতে সাহায্য করে। Aggregation functions সাধারণত সেলগুলির মধ্যে থাকা ডেটা গণনা করতে ব্যবহৃত হয়, যেমন sum, average, count, min, max ইত্যাদি।
এই ফিচারগুলি সাধারণত numeric data (যেমন sales, revenue, etc.) রিপোর্ট করার জন্য ব্যবহৃত হয় যেখানে একাধিক সারির ডেটা একত্রিত বা সামারি করতে হয়।
এই গাইডে, আমরা Summarization এবং Aggregation Functions কিভাবে JasperReports ব্যবহার করে ডেটাতে প্রয়োগ করা হয় তা দেখবো।
Aggregation Functions উদাহরণ
ধরা যাক, আমরা একটি Sales Report তৈরি করতে যাচ্ছি যেখানে total sales এবং average sales হিসাব করা হবে। আমরা বিভিন্ন aggregation ফাংশনগুলি ব্যবহার করে ডেটাকে সঠিকভাবে উপস্থাপন করবো।
ধাপ ১: Sales Report Model
প্রথমে একটি SalesData ক্লাস তৈরি করবো যেখানে প্রতিটি বিক্রির জন্য Sales Representative, Product Name, এবং Sales Amount থাকবে।
public class SalesData {
private String salesRep;
private String productName;
private double salesAmount;
public SalesData(String salesRep, String productName, double salesAmount) {
this.salesRep = salesRep;
this.productName = productName;
this.salesAmount = salesAmount;
}
// Getters
public String getSalesRep() {
return salesRep;
}
public String getProductName() {
return productName;
}
public double getSalesAmount() {
return salesAmount;
}
}
এটি একটি সাধারণ SalesData মডেল ক্লাস যেখানে salesRep, productName, এবং salesAmount ফিল্ড রয়েছে।
ধাপ ২: Report Design (JRXML)
এখন আমরা একটি Sales Report তৈরি করব যা JasperReports এ aggregation ফাংশন ব্যবহার করবে।
2.1. Sales Report with Aggregation Functions
<?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="SalesReport" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Fields -->
<field name="salesRep" class="java.lang.String"/>
<field name="productName" class="java.lang.String"/>
<field name="salesAmount" class="java.lang.Double"/>
<!-- Variables for Summarization -->
<variable name="totalSales" class="java.lang.Double" calculation="Sum">
<variableExpression><![CDATA[$F{salesAmount}]]></variableExpression>
</variable>
<variable name="averageSales" class="java.lang.Double" calculation="Average">
<variableExpression><![CDATA[$F{salesAmount}]]></variableExpression>
</variable>
<!-- Title and Header -->
<title>
<band height="50">
<staticText>
<reportElement x="0" y="0" width="200" height="30"/>
<textElement textAlignment="Center"/>
<text><![CDATA[Sales Report]]></text>
</staticText>
</band>
</title>
<!-- Detail Section for displaying sales data -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{salesRep}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="120" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA[$F{productName}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="330" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{salesAmount}]]></textFieldExpression>
</textField>
</band>
</detail>
<!-- Summary Section for Total and Average Sales -->
<summary>
<band height="40">
<textField>
<reportElement x="0" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA["Total Sales: " + $V{totalSales}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="220" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA["Average Sales: " + $V{averageSales}]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
ব্যাখ্যা:
- Fields: রিপোর্টে ডেটা প্রদর্শন করতে ব্যবহৃত ফিল্ডগুলি:
- salesRep: বিক্রয় প্রতিনিধির নাম।
- productName: বিক্রিত পণ্যের নাম।
- salesAmount: বিক্রির পরিমাণ।
- Variables for Summarization:
- totalSales:
Sumaggregation ফাংশন ব্যবহার করে salesAmount এর মোট যোগফল হিসাব করা হয়েছে। - averageSales:
Averageaggregation ফাংশন ব্যবহার করে salesAmount এর গড় হিসাব করা হয়েছে।
- totalSales:
- Summary Section: রিপোর্টের শেষে totalSales এবং averageSales প্রদর্শিত হবে।
ধাপ ৩: Java কোড দিয়ে রিপোর্ট পূর্ণ করা এবং এক্সপোর্ট করা
এখন আমরা JasperReports এর সাথে Java কোড ব্যবহার করে রিপোর্টটি পূর্ণ করব এবং PDF, Excel, এবং CSV ফরম্যাটে এক্সপোর্ট করব।
Java কোড উদাহরণ:
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 JasperReportsAggregationExample {
public static void main(String[] args) {
try {
// Sample Sales Data
List<SalesData> salesDataList = new ArrayList<>();
salesDataList.add(new SalesData("John Doe", "Product A", 5000));
salesDataList.add(new SalesData("John Doe", "Product B", 3000));
salesDataList.add(new SalesData("Jane Smith", "Product C", 7000));
salesDataList.add(new SalesData("Jane Smith", "Product D", 9000));
// JRBeanCollectionDataSource for Sales Data
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(salesDataList);
// Compile the .jrxml file into a JasperReport
JasperReport jasperReport = JasperCompileManager.compileReport("SalesReport.jrxml");
// Parameters for the report (if any)
Map<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Sales Report");
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export the report to PDF
JasperExportManager.exportReportToPdfFile(jasperPrint, "SalesReport.pdf");
// Export the report to Excel (XLS)
JRXlsExporter xlsExporter = new JRXlsExporter();
xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "SalesReport.xls");
xlsExporter.exportReport();
// Export the report to CSV
JasperExportManager.exportReportToCsvFile(jasperPrint, "SalesReport.csv");
System.out.println("Report Generated Successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
Explanation:
- SalesData: SalesData ক্লাসের একটি লিস্ট তৈরি করা হয়েছে।
- JRBeanCollectionDataSource: SalesData লিস্টের জন্য ডেটা সোর্স তৈরি করা হয়েছে।
- JasperCompileManager.compileReport:
.jrxmlফাইলটি কম্পাইল করে JasperReport তৈরি করা হয়েছে। - JasperFillManager.fillReport: রিপোর্টটি ডেটা দিয়ে পূর্ণ করা হয়েছে।
- JasperExportManager.exportReportToPdfFile: রিপোর্টটি PDF ফরম্যাটে এক্সপোর্ট করা হয়েছে।
- JRXlsExporter: রিপোর্টটি Excel (XLS) ফরম্যাটে এক্সপোর্ট করা হয়েছে।
ধাপ ৪: Output এবং Result
PDF Output Example:
Sales Report
Total Sales: 34000.0
Average Sales: 8500.0
------------------------------------------------
Employee Product Sales Amount
---------------------------------------
John Doe Product A 5000.0
John Doe Product B 3000.0
Jane Smith Product C 7000.0
Jane Smith Product D 9000.0
Excel and CSV Output:
Excel এবং CSV ফরম্যাটে রিপোর্টে একই ডেটা থাকবে যা আপনি JasperReports দিয়ে এক্সপোর্ট করেছেন।
- JasperReports এর মাধ্যমে আপনি Summarization এবং Aggregation Functions ব্যবহার করে ডেটার উপর বিভিন্ন ধরনের গণনা করতে পারেন, যেমন sum, average, count, min, max ইত্যাদি।
- Variables এবং Aggregation Functions ব্যবহার করে রিপোর্টের মধ্যে summary এবং totals প্রদর্শন করতে পারবেন।
- JasperReports আপনাকে multiple export formats (PDF, Excel, CSV) সমর্থন করে, যা রিপোর্টের আউটপুট বিভিন্ন ফরম্যাটে রিটার্ন করতে সাহায্য করে।
Read more