JasperReports-এ Group Headers এবং Footers ব্যবহার করা হয় ডেটা রিপোর্টে গ্রুপ ভিত্তিক উপস্থাপন তৈরি করতে। যখন ডেটার মধ্যে বিভিন্ন বিভাগ বা গ্রুপ থাকে এবং আপনি প্রতিটি গ্রুপের জন্য একটি বিশেষ শিরোনাম বা ফুটার প্রদর্শন করতে চান, তখন Group Headers এবং Footers খুবই কার্যকরী। এই ফিচারগুলো আপনাকে রিপোর্টে ডেটা গ্রুপিং, গ্রুপ ভিত্তিক কাস্টম শিরোনাম বা ফুটার সংযোজন, এবং প্রতি গ্রুপে পরিসংখ্যান দেখানোর সুযোগ দেয়।
Group Headers এবং Footers এর ভূমিকা
- Group Header:
- গ্রুপ হেডার হল রিপোর্টের একটি অংশ যা একটি নতুন গ্রুপ শুরু হলে প্রদর্শিত হয়। এটি গ্রুপের জন্য একটি শিরোনাম, যেমন গ্রুপের নাম, শিরোনাম বা অন্যান্য সম্পর্কিত তথ্য দিতে পারে। এটি মূলত গ্রুপের শুরুতে থাকে এবং গ্রুপের জন্য ডেটা প্রস্তুত করতে সাহায্য করে।
- Group Footer:
- গ্রুপ ফুটার হল রিপোর্টের একটি অংশ যা একটি গ্রুপের শেষে প্রদর্শিত হয়। এটি গ্রুপের পরিসংখ্যান বা সারণী বা ডেটার কোন আরেকটি সারাংশ (যেমন, মোট, গড়, মিন, ম্যাক্স) প্রদান করতে পারে। এটি গ্রুপের শেষে ডেটা একত্রিত করার জন্য ব্যবহৃত হয়।
JasperReports এ Group Headers এবং Footers তৈরি করা
JasperReports-এ Group Header এবং Footer তৈরি করার জন্য JRXML ফাইলে group ট্যাগ ব্যবহার করতে হয়। এই ট্যাগের মাধ্যমে গ্রুপ তৈরি করা হয় এবং তারপর গ্রুপের জন্য শিরোনাম এবং ফুটার কনফিগার করা হয়।
Step 1: Group Header এবং Footer তৈরি করা
ধরা যাক, আমাদের একটি রিপোর্টে পণ্য এবং বিক্রয় সম্পর্কিত ডেটা রয়েছে এবং আমরা প্রতি বিভাগের জন্য পণ্যের নাম (গ্রুপ হেডার) এবং মোট বিক্রয় (গ্রুপ ফুটার) দেখতে চাই।
JRXML উদাহরণ:
<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" language="java" pageWidth="595" pageHeight="842">
<!-- Query to retrieve data -->
<queryString>
<![CDATA[SELECT product_name, quantity, price FROM sales_data]]>
</queryString>
<!-- Field Definitions -->
<field name="product_name" class="java.lang.String"/>
<field name="quantity" class="java.lang.Integer"/>
<field name="price" class="java.lang.Double"/>
<!-- Group Definition for 'product_name' -->
<group name="ProductGroup">
<groupExpression><![CDATA[$F{product_name}]]></groupExpression>
</group>
<!-- Group Header -->
<groupHeader>
<band height="30">
<textField>
<reportElement x="0" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA["Product: " + $F{product_name}]]></textFieldExpression>
</textField>
</band>
</groupHeader>
<!-- Group Footer -->
<groupFooter>
<band height="30">
<textField>
<reportElement x="0" y="0" width="200" height="20"/>
<textFieldExpression><![CDATA["Total Sales: " + ($F{quantity} * $F{price})]]></textFieldExpression>
</textField>
</band>
</groupFooter>
<!-- Detail Section -->
<detail>
<band height="20">
<textField>
<reportElement x="0" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{product_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="100" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{quantity}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="200" y="0" width="100" height="20"/>
<textFieldExpression><![CDATA[$F{price}]]></textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>
ব্যাখ্যা:
- Group Definition:
group name="ProductGroup"ট্যাগের মাধ্যমে product_name ফিল্ডের জন্য একটি গ্রুপ তৈরি করা হয়েছে। এটি ফিল্ডের মান অনুসারে রিপোর্টের গ্রুপ তৈরি করবে।groupExpression: এই এক্সপ্রেশনটি ডেটার গ্রুপিং করার জন্য ব্যবহৃত হয় (এখানে এটি $F{product_name} ব্যবহার করে পণ্য অনুযায়ী গ্রুপ তৈরি করছে)।
- Group Header:
- গ্রুপের শিরোনাম অংশে, groupHeader ট্যাগের মধ্যে $F{product_name} দেখানো হচ্ছে, যা প্রতিটি পণ্যের নাম গ্রুপ হেডারে প্রদর্শন করবে।
- Group Footer:
- গ্রুপ ফুটারে, $F{quantity} এবং $F{price} ফিল্ডের মানের গুণফল ব্যবহার করে মোট বিক্রয় গণনা করা হচ্ছে এবং সেটি "Total Sales" হিসেবে প্রদর্শন করা হচ্ছে।
- Detail Section:
- detail অংশে, প্রতিটি পণ্যের জন্য ডেটা (পণ্য নাম, পরিমাণ, মূল্য) প্রদর্শিত হবে।
Step 2: রিপোর্টে Group Headers এবং Footers প্রদর্শন করা
এই JRXML ফাইলের মাধ্যমে রিপোর্টটি কম্পাইল করলে, আপনি প্রতিটি Product Group এর জন্য একটি গ্রুপ হেডার (পণ্যের নাম) এবং একটি গ্রুপ ফুটার (মোট বিক্রয়) দেখতে পাবেন।
Java Code Example (Group Header/Footer সহ রিপোর্ট):
import net.sf.jasperreports.engine.*;
import java.util.HashMap;
public class JasperReportsGroupHeaderFooterExample {
public static void main(String[] args) throws JRException {
// JRXML ফাইল থেকে রিপোর্ট তৈরি
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/your/SalesReport.jrxml");
// ডেটাবেস থেকে ডেটা যোগ করা (যদি প্রয়োজন হয়)
HashMap<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Sales Report");
// রিপোর্ট ফিলিং (ডেটাবেস কানেকশন এবং ডেটা সহ)
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());
// রিপোর্ট পিডিএফ আউটপুট
JasperExportManager.exportReportToPdfFile(jasperPrint, "SalesReportOutput.pdf");
}
}
Group Headers এবং Footers এর সুবিধা
- ডেটা গ্রুপিং:
- Group headers এবং footers ব্যবহার করে আপনি ডেটাকে বিভিন্ন গ্রুপে বিভক্ত করতে পারেন। এটি রিপোর্টের তথ্যগুলো আরও সুসংগঠিত এবং সহজভাবে উপস্থাপন করতে সাহায্য করে।
- সারাংশ এবং পরিসংখ্যান:
- গ্রুপ ফুটার ব্যবহার করে আপনি প্রতি গ্রুপের জন্য সাবটোটাল, মোট, গড়, ইত্যাদি পরিসংখ্যান প্রদর্শন করতে পারেন। এটি ডেটা বিশ্লেষণে গুরুত্বপূর্ণ ভূমিকা পালন করে।
- প্রতিটি বিভাগে কাস্টম শিরোনাম:
- গ্রুপ হেডার ব্যবহারের মাধ্যমে আপনি প্রতিটি বিভাগের জন্য কাস্টম শিরোনাম দিতে পারেন, যা রিপোর্টের পাঠযোগ্যতা বাড়ায়।
- ডাইনামিক রিপোর্টিং:
- গ্রুপ হেডার এবং ফুটার ব্যবহারে আপনি রিপোর্টের কাঠামোকে আরও ডাইনামিক এবং কাস্টমাইজড করতে পারেন।
Group Headers এবং Footers JasperReports-এ রিপোর্টের কাঠামো এবং বিন্যাসকে উন্নত করার জন্য গুরুত্বপূর্ণ উপাদান। গ্রুপিংয়ের মাধ্যমে আপনি ডেটা সুন্দরভাবে সংগঠিত করতে পারেন এবং প্রতিটি গ্রুপের জন্য প্রয়োজনীয় পরিসংখ্যান বা তথ্য সহজেই উপস্থাপন করতে পারেন। এই ফিচারটি বিশেষভাবে বড় বা জটিল রিপোর্টে ব্যবহৃত হয় যেখানে আপনি একটি নির্দিষ্ট গ্রুপ বা বিভাগে ডেটার বিস্তারিত চাইছেন। JasperReports এর গ্রুপ হেডার এবং ফুটারগুলি আপনার রিপোর্টের অভ্যন্তরে কাঠামোগততা এবং শ্রেণীবদ্ধতা আনতে সাহায্য করে।
Read more