JasperReports একটি শক্তিশালী রিপোর্টিং টুল যা রিপোর্ট তৈরি করার পাশাপাশি, তৈরি করা রিপোর্টকে বিভিন্ন ফরম্যাটে এক্সপোর্ট করার সুবিধা প্রদান করে। এর মধ্যে অন্যতম হচ্ছে PDF এবং Excel। এই দুইটি ফরম্যাট সাধারণত রিপোর্টের ব্যবহারে সবচেয়ে জনপ্রিয় এবং ব্যবহৃত হয়।
JasperReports JasperExportManager ক্লাসের মাধ্যমে সহজেই PDF এবং Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে পারে।
1. JasperReports - PDF Export
PDF ফরম্যাটে এক্সপোর্ট করা JasperReports-এর একটি অন্যতম সুবিধা। JasperReports কোডের মাধ্যমে সহজে PDF ফাইল তৈরি এবং এক্সপোর্ট করা যায়।
PDF Export Example
ধরা যাক, আমরা একটি রিপোর্ট তৈরি করেছি এবং সেটি PDF ফরম্যাটে এক্সপোর্ট করতে চাই।
Step 1: Report Compile করা
প্রথমে, রিপোর্টটি কম্পাইল করতে হবে। এটা করার জন্য JasperCompileManager ব্যবহার করা হয়। এই কম্পাইল করা রিপোর্টে .jasper ফাইল আউটপুট হবে।
Step 2: Report Fill করা
পরবর্তীতে, রিপোর্টটি fill করতে হবে, অর্থাৎ ডেটা দিতে হবে রিপোর্টে। এটি JasperFillManager ব্যবহার করে করা হয়।
Step 3: PDF Export করা
সবশেষে, রিপোর্টটি PDF ফরম্যাটে এক্সপোর্ট করতে JasperExportManager ব্যবহার করা হয়।
import net.sf.jasperreports.engine.*;
import java.util.HashMap;
import java.util.Map;
public class JasperReportsPDFExportExample {
public static void main(String[] args) {
try {
// Compile the report
String reportPath = "path/to/report.jrxml";
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Data source for the report (could be a JDBC connection, JavaBeans, etc.)
Map<String, Object> parameters = new HashMap<>(); // Parameters if any
JRDataSource dataSource = new JREmptyDataSource(); // For example, an empty data source
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export the report to PDF
String outputPath = "path/to/output/report.pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint, outputPath);
System.out.println("Report exported to PDF successfully.");
} catch (JRException e) {
e.printStackTrace();
}
}
}
Explanation:
JasperCompileManager.compileReport():.jrxmlরিপোর্ট টেমপ্লেট ফাইল কম্পাইল করা হয়।JasperFillManager.fillReport(): রিপোর্টে ডেটা ইনজেক্ট করা হয়, এবং এটি একটিJasperPrintঅবজেক্ট রিটার্ন করে।JasperExportManager.exportReportToPdfFile(): রিপোর্টকে PDF ফরম্যাটে এক্সপোর্ট করা হয়।
Output:
একটি report.pdf ফাইল তৈরি হবে যার মধ্যে রিপোর্টের সমস্ত ডেটা এবং ডিজাইন থাকবে।
2. JasperReports - Excel Export
Excel Export খুবই জনপ্রিয় এবং ব্যবহারযোগ্য, বিশেষত যখন ডেটা এডিট করা বা বিশ্লেষণ করা প্রয়োজন হয়। JasperReports সহজেই Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে পারে, যা .xls (Excel 97-2003) বা .xlsx (Excel 2007 এবং পরবর্তি) ফরম্যাটে হতে পারে।
Excel Export Example
JasperReports-এর মাধ্যমে Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে JRXlsExporter ব্যবহার করা হয়।
Step 1: Report Compile করা
যেভাবে PDF এক্সপোর্টে রিপোর্ট কম্পাইল করা হয়, সেভাবে Excel এক্সপোর্টের জন্যও রিপোর্ট কম্পাইল করতে হবে।
Step 2: Report Fill করা
ডেটা ইনজেক্ট করা হয় রিপোর্টে যেমন PDF এক্সপোর্টে করা হয়, একইভাবে Excel এক্সপোর্টেও ডেটা ইনজেক্ট করা হবে।
Step 3: Excel Export করা
এখন রিপোর্টটি Excel ফরম্যাটে এক্সপোর্ট করা হবে।
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
import java.util.HashMap;
import java.util.Map;
public class JasperReportsExcelExportExample {
public static void main(String[] args) {
try {
// Compile the report
String reportPath = "path/to/report.jrxml";
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Data source for the report
Map<String, Object> parameters = new HashMap<>(); // Parameters if any
JRDataSource dataSource = new JREmptyDataSource(); // For example, an empty data source
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Prepare Excel export parameters
JRXlsExporter exporter = new JRXlsExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("path/to/output/report.xlsx"));
// Set Excel-specific configurations (optional)
exporter.setConfiguration(new SimpleXlsReportConfiguration());
exporter.exportReport();
System.out.println("Report exported to Excel successfully.");
} catch (JRException e) {
e.printStackTrace();
}
}
}
Explanation:
JRXlsExporter: Excel এক্সপোর্টার ক্লাস যা রিপোর্টকে Excel ফরম্যাটে রূপান্তর করতে ব্যবহৃত হয়।SimpleExporterInput: রিপোর্টের ডেটাকে এক্সপোর্টের জন্য প্রস্তুত করে।SimpleOutputStreamExporterOutput: Excel ফাইলের আউটপুট পাথ নির্ধারণ করে।
Output:
একটি report.xlsx ফাইল তৈরি হবে যা Excel ফরম্যাটে রিপোর্টের সমস্ত ডেটা এবং ফর্ম্যাটিং ধারণ করবে।
3. Advanced Excel Export Customization
JasperReports-এ Excel এক্সপোর্ট করার সময় আপনি আরও কিছু কাস্টমাইজেশন করতে পারেন যেমন:
- Column Width Adjustment:
- আপনি column width কাস্টমাইজ করতে পারেন যাতে ডেটা সুন্দরভাবে প্রদর্শিত হয়।
- Cell Formatting:
- cell formatting করতে পারেন, যেমন font size, color, alignment ইত্যাদি।
- Exporting Data to Multiple Sheets:
- রিপোর্টকে একাধিক শিটে এক্সপোর্ট করতে পারেন। প্রতিটি শিটে বিভিন্ন ডেটা সেগমেন্ট থাকতে পারে।
Example: Customize Excel Export Settings
SimpleXlsReportConfiguration configuration = new SimpleXlsReportConfiguration();
configuration.setOnePagePerSheet(true); // One page per sheet
configuration.setRemoveEmptySpaceBetweenRows(true);
configuration.setIgnoreCellBorder(false);
exporter.setConfiguration(configuration);
এখানে setOnePagePerSheet(true) দিয়ে প্রতিটি পৃষ্ঠার জন্য আলাদা শিট তৈরি করতে পারেন।
JasperReports দিয়ে PDF এবং Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করা সহজ এবং কার্যকরী। নিম্নলিখিত পদ্ধতিতে আপনি JasperReports ব্যবহার করে রিপোর্ট এক্সপোর্ট করতে পারেন:
- PDF Export:
JasperExportManager.exportReportToPdfFile() - Excel Export:
JRXlsExporterএবং JasperFillManager
এছাড়া, আপনি Excel এক্সপোর্টে কাস্টমাইজেশন যেমন column width adjustment, cell formatting, এবং multiple sheets ব্যবহার করতে পারেন। JasperReports আপনাকে dynamic reports তৈরি করতে এবং PDF/Excel ফরম্যাটে সহজে এক্সপোর্ট করার সুযোগ দেয়।
JasperReports হল একটি শক্তিশালী ওপেন সোর্স রিপোর্টিং টুল যা বিভিন্ন ফরম্যাটে রিপোর্ট তৈরি করতে পারে, যেমন PDF, HTML, Excel, CSV, ইত্যাদি। এই নিবন্ধে আমরা দেখব কিভাবে JasperReports থেকে PDF এক্সপোর্ট করতে হয়।
JasperReports থেকে PDF Export করার জন্য একটি রিপোর্টের তৈরি হওয়া JasperPrint অবজেক্টকে PDF ফরম্যাটে এক্সপোর্ট করা হয়। JasperExportManager ক্লাস এই কাজটি পরিচালনা করে।
JasperReports থেকে PDF Export করার ধাপসমূহ
1. JasperReports Library এবং Dependencies Setup
প্রথমে, আপনি যদি Maven ব্যবহার করেন, তবে আপনার pom.xml ফাইলে নিচের dependency যোগ করতে হবে:
<dependencies>
<!-- JasperReports Dependency -->
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.18.1</version> <!-- Latest version -->
</dependency>
<!-- JFreeChart for charts (Optional) -->
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version>
</dependency>
</dependencies>
আপনি JasperReports Library ডাউনলোড করে JAR ফাইলগুলি আপনার প্রজেক্টে যোগ করলেও এই কাজটি করতে পারেন।
2. JasperReports থেকে PDF Export এর জন্য Code Example
এখন, JasperReports তৈরি করে সেই রিপোর্টের আউটপুট PDF ফরম্যাটে এক্সপোর্ট করার জন্য নিচের ধাপগুলো অনুসরণ করতে হবে।
- Report Design (JRXML):
- প্রথমে আপনাকে একটি JRXML ফাইল তৈরি করতে হবে যেটি রিপোর্টের layout এবং data structure নির্ধারণ করে।
- JRXML থেকে JasperReport তৈরি:
- JasperCompileManager ব্যবহার করে JRXML ফাইলটি jasper ফাইলে কম্পাইল করা হয়।
- Fill the Report:
- JasperFillManager ব্যবহার করে JasperPrint অবজেক্টে রিপোর্টটি পূর্ণ (fill) করা হয়।
- Export to PDF:
- JasperExportManager ব্যবহার করে JasperPrint থেকে PDF ফরম্যাটে রপ্তানি করা হয়।
Code Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import java.util.*;
public class JasperPDFExportExample {
public static void main(String[] args) {
try {
// Step 1: Prepare the data source (using a collection of JavaBeans)
List<Person> personList = new ArrayList<>();
personList.add(new Person("John Doe", 30));
personList.add(new Person("Jane Smith", 25));
JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(personList);
// Step 2: Compile the report (from JRXML file)
String reportPath = "path/to/your_report.jrxml";
JasperReport jasperReport = JasperCompileManager.compileReport(reportPath);
// Step 3: Fill the report with data (parameters and data source)
Map<String, Object> parameters = new HashMap<>();
parameters.put("Title", "Person Report");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Step 4: Export the report to PDF
String outputPdfFile = "output/person_report.pdf";
JasperExportManager.exportReportToPdfFile(jasperPrint, outputPdfFile);
System.out.println("PDF report exported successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getters
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
ব্যাখ্যা:
- Data Source: এখানে,
JRBeanCollectionDataSourceব্যবহার করা হয়েছে যা JavaBeans বা Collections থেকে ডেটা নিয়ে রিপোর্টে ব্যবহার করে। - Jasper Report:
JasperCompileManager.compileReport()মেথডের মাধ্যমে JRXML ফাইল থেকে JasperReport অবজেক্ট তৈরি করা হয়। - Filling the Report:
JasperFillManager.fillReport()মেথড ব্যবহার করে রিপোর্টে ডেটা পূর্ণ করা হয়। - Export to PDF:
JasperExportManager.exportReportToPdfFile()মেথড ব্যবহার করে jasperPrint অবজেক্ট থেকে PDF তৈরি করা হয়।
3. Additional PDF Export Options
JasperReports-এ PDF এক্সপোর্ট করার সময় আপনি কিছু অতিরিক্ত কনফিগারেশনও করতে পারেন যেমন:
- Password Protection:
- PDF ফাইলের ওপর পাসওয়ার্ড সেট করতে পারেন।
- Compression:
- PDF ফাইলের আকার ছোট করার জন্য compression সক্রিয় করতে পারেন।
- Metadata:
- PDF ফাইলের জন্য metadata যোগ করতে পারেন, যেমন author, title, subject ইত্যাদি।
Example: PDF with Password and Metadata
import net.sf.jasperreports.export.*;
public class JasperPDFExportWithOptions {
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 to PDF with options (password, metadata)
JRExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "output/protected_report.pdf");
// Set password
exporter.setParameter(JRPdfExporterParameter.PDF_PASSWORD, "securePassword123");
// Set metadata
exporter.setParameter(JRPdfExporterParameter.PDF_CREATOR, "My Company");
exporter.setParameter(JRPdfExporterParameter.PDF_AUTHOR, "John Doe");
exporter.setParameter(JRPdfExporterParameter.PDF_TITLE, "Sample Report");
// Export the report
exporter.exportReport();
System.out.println("PDF with password and metadata exported successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
4. Error Handling and Best Practices
- Error Handling: JasperReports-এ JRException এবং IOException যেমন এররগুলো আসতে পারে। এসব এক্সসেপশনের জন্য try-catch ব্লক ব্যবহার করুন।
- Performance Optimization: বড় রিপোর্টের জন্য আপনি subreports ব্যবহার করতে পারেন, এবং যদি রিপোর্টের আউটপুট বড় হয় তবে memory management এর দিকে খেয়াল রাখতে হবে।
- Export Options: আপনাকে যদি অন্য ফরম্যাটে (যেমন Excel বা CSV) রিপোর্ট এক্সপোর্ট করতে হয়, তবে
JasperExportManager.exportReportToXlsFile()বাJasperExportManager.exportReportToCsvFile()ব্যবহার করতে পারেন।
JasperReports থেকে PDF এক্সপোর্ট করা সহজ এবং সরল। JasperExportManager-এর মাধ্যমে আপনি JasperPrint অবজেক্ট থেকে PDF তৈরি করতে পারেন এবং password protection, metadata এবং compression সহ আরও অনেক কাস্টমাইজেশন করতে পারেন।
এটি একটি শক্তিশালী টুল যা রিপোর্ট তৈরি করার প্রক্রিয়া এবং রিপোর্টের আউটপুটকে আরও উন্নত এবং নিরাপদ করে তোলে।
JasperReports একটি শক্তিশালী রিপোর্টিং টুল যা বিভিন্ন ধরনের আউটপুট ফরম্যাটে রিপোর্ট রপ্তানি করতে সক্ষম, তার মধ্যে একটি জনপ্রিয় ফরম্যাট হলো Excel (XLSX)। JasperReports আপনাকে Excel Export কাস্টমাইজ করার জন্য বিভিন্ন কনফিগারেশন প্রদান করে, যেমন cell styles, column widths, sheet names, data formatting, ইত্যাদি। এই নিবন্ধে, আমরা Excel Export এর জন্য কাস্টম কনফিগারেশন নিয়ে আলোচনা করব।
1. Excel Export Configuration Overview
JasperReports আপনাকে Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করার জন্য JasperExportManager.exportReportToXlsxFile() মেথড প্রদান করে। তবে আপনি চাইলে Excel এক্সপোর্ট কাস্টমাইজ করতে পারেন, যেমন:
- Cell Styles: ফন্ট, ব্যাকগ্রাউন্ড কালার, বর্ডার, টেক্সট অ্যালাইনমেন্ট ইত্যাদি।
- Column Width: কলামের প্রস্থ কাস্টমাইজ করা।
- Sheet Name: এক্সপোর্টের সময় শীটের নাম কাস্টমাইজ করা।
- Data Formatting: ডেটার ফরম্যাটিং, যেমন date এবং currency ফরম্যাট।
- Row and Column Headers: এক্সপোর্টের সময় হেডারের কাস্টমাইজেশন।
2. Basic Excel Export
Excel Export এর জন্য প্রথমে আপনাকে রিপোর্ট তৈরি করতে হবে এবং তারপর JasperExportManager ব্যবহার করে রিপোর্টটি XLSX ফরম্যাটে এক্সপোর্ট করতে হবে।
Basic Excel Export Example:
import net.sf.jasperreports.engine.*;
public class ExcelExportExample {
public static void main(String[] args) {
try {
// Compile the report from JRXML to JasperReport
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 format
JasperExportManager.exportReportToXlsxFile(jasperPrint, "output/report.xlsx");
System.out.println("Excel report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
এই কোডটি JRXML ফাইলকে JasperReport এ রূপান্তরিত করে এবং Excel (XLSX) ফরম্যাটে রিপোর্ট এক্সপোর্ট করে।
3. Customizing Excel Export
JasperReports-এ Excel export কাস্টমাইজ করার জন্য আপনি ExcelExportParameter ব্যবহার করতে পারেন। এটি আপনাকে cell styles, sheet name, column widths, row headers, এবং অন্যান্য কাস্টম অপশন সেট করতে সাহায্য করবে।
Custom Excel Export Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
import java.util.*;
public class CustomExcelExportExample {
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());
// Set export parameters for Excel
JRExcelExporter exporter = new JRExcelExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "output/custom_report.xlsx");
// Customizing Excel export
exporter.setParameter(JRExcelExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS, Boolean.TRUE);
exporter.setParameter(JRExcelExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.setParameter(JRExcelExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
// Customize Sheet name
Map<String, Object> parameters = new HashMap<>();
parameters.put("SheetName", "Employee Report");
exporter.setParameter(JRExcelExporterParameter.SHEET_NAME, "Employee Report");
// Export to Excel file
exporter.exportReport();
System.out.println("Custom Excel report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
Custom Export Parameters:
JRExcelExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_COLUMNS: এই সেটিংটি এক্সেল শীটের মধ্যে ফাঁকা জায়গা (empty space) দূর করতে ব্যবহৃত হয়।JRExcelExporterParameter.IS_WHITE_PAGE_BACKGROUND: এক্সেল শীটের পৃষ্ঠার ব্যাকগ্রাউন্ড কালার কাস্টমাইজ করতে ব্যবহৃত হয়। যদি আপনি FALSE সেট করেন, তবে এটি প্রিন্ট করা পৃষ্ঠার ব্যাকগ্রাউন্ড কালার লুকাবে না।JRExcelExporterParameter.IS_ONE_PAGE_PER_SHEET: এক্সেল ফাইলে one page per sheet নির্ধারণ করতে ব্যবহৃত হয়।JRExcelExporterParameter.SHEET_NAME: শীটের নাম কাস্টমাইজ করতে ব্যবহৃত হয়।
4. Advanced Excel Export Customization
Excel export-এর আরও কাস্টমাইজেশনের জন্য আপনি Excel cell styles, column widths, headers, footers, এবং formulas কাস্টমাইজ করতে পারেন।
Excel Export with Column Width and Cell Style Customization:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
import net.sf.jasperreports.export.ooxml.*;
public class AdvancedExcelExportExample {
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());
// Create an exporter for Excel
JRExcelExporter exporter = new JRExcelExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "output/advanced_report.xlsx");
// Customize the sheet
exporter.setParameter(JRExcelExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
// Set Column Widths
Map<Integer, Integer> columnWidths = new HashMap<>();
columnWidths.put(0, 20); // Set column 0 width to 20
columnWidths.put(1, 30); // Set column 1 width to 30
exporter.setParameter(JRExcelExporterParameter.COLUMN_WIDTHS, columnWidths);
// Set cell style for headers (Bold and Centered)
Map<String, Object> parameters = new HashMap<>();
parameters.put("HeaderStyle", "Bold and Centered");
exporter.setParameter(JRExcelExporterParameter.HEADER_STYLE, parameters);
// Export the report to Excel
exporter.exportReport();
System.out.println("Advanced Excel report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
Excel Export Customizations:
- Column Widths: আপনি নির্দিষ্ট কলামের প্রস্থ কাস্টমাইজ করতে পারেন যেমন columnWidths.put(columnIndex, width)। এতে ডেটা আরও ভালোভাবে উপস্থাপিত হবে।
- Cell Styles: আপনি header এবং data cells এর জন্য styles নির্ধারণ করতে পারেন, যেমন ফন্ট সাইজ, স্টাইল, অ্যালাইনমেন্ট ইত্যাদি।
- Sheet Name: আপনি শীটের নাম কাস্টমাইজ করতে পারেন, যেমন Sheet1, Employee Report ইত্যাদি।
5. Formatting Data in Excel Export
Excel Export কাস্টমাইজ করার জন্য আপনি number formatting, date formatting, এবং currency formatting করতে পারেন।
Number and Currency Formatting Example:
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.export.*;
public class ExcelNumberFormattingExample {
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());
// Set export parameters for Excel
JRExcelExporter exporter = new JRExcelExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "output/formatted_report.xlsx");
// Set number formatting for a column (e.g., format as currency)
exporter.setParameter(JRExcelExporterParameter.FORMAT_NUMBER, "$#,##0.00");
// Export the report
exporter.exportReport();
System.out.println("Formatted Excel report generated successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
- Currency Formatting: $#,##0.00 ফরম্যাটে সংখ্যা প্রদর্শন করা হবে, যেমন: $1,234.56।
- Date Formatting: আপনি yyyy-MM-dd বা MM/dd/yyyy এর মতো কাস্টম date formats ব্যবহার করতে পারেন।
- JasperReports-এ Excel Export কাস্টমাইজেশন অনেক গুরুত্বপূর্ণ, বিশেষ করে যখন আপনি আপনার রিপোর্টের layout, styles, data formatting, এবং cell styling কাস্টমাইজ করতে চান।
- Excel Export করতে JasperExportManager ব্যবহার করা যায় এবং JRExcelExporter ক্লাসের মাধ্যমে আরও কাস্টমাইজেশন করতে পারবেন।
- Column Widths, Cell Styles, Sheet Names, এবং Data Formatting সহ আপনি আপনার রিপোর্টের আউটপুটকে আরও পেশাদার এবং কাস্টমাইজড করতে পারবেন।
JasperReports একটি শক্তিশালী রিপোর্টিং টুল যা Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করতে সক্ষম। Excel ফরম্যাটে ডেটা ফরম্যাটিং এবং লেআউট ডিজাইন করা একটি গুরুত্বপূর্ণ অংশ, কারণ এটি রিপোর্টের ব্যবহারযোগ্যতা এবং প্রদর্শন উন্নত করে। এখানে JasperReports-এ Excel ফরম্যাটে data formatting এবং layout design কাস্টমাইজ করার কিছু পদ্ধতি এবং সেরা অভ্যাস আলোচনা করা হয়েছে।
1. Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করা
JasperReports দিয়ে Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করার জন্য, JasperExportManager.exportReportToExcelFile() পদ্ধতি ব্যবহার করা হয়। এই পদ্ধতিটি রিপোর্টটি Excel ফরম্যাটে রপ্তানি করে এবং আপনি রিপোর্টের layout এবং data formatting কাস্টমাইজ করতে পারেন।
Java কোড ব্যবহার করে Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করা:
import net.sf.jasperreports.engine.*;
import java.util.Map;
import java.util.HashMap;
public class ExcelExportExample {
public static void main(String[] args) {
try {
// Compile the JRXML file to JasperReport
JasperReport jasperReport = JasperCompileManager.compileReport("path/to/report.jrxml");
// Parameters (if needed)
Map<String, Object> parameters = new HashMap<>();
parameters.put("ReportTitle", "Sales Report");
// Data source (for example, using an empty data source for the sake of the example)
JRDataSource dataSource = new JREmptyDataSource();
// Fill the report with data
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource);
// Export the report to Excel file
JasperExportManager.exportReportToExcelFile(jasperPrint, "output/sales_report.xlsx");
System.out.println("Report exported to Excel successfully!");
} catch (JRException e) {
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- এখানে JasperExportManager.exportReportToExcelFile() ব্যবহার করা হয়েছে যাতে JasperReports-এর Excel ফরম্যাটে রপ্তানি করা যায়।
- JREmptyDataSource এখানে ডেমো ডেটা সোর্স হিসেবে ব্যবহার করা হয়েছে, কিন্তু বাস্তবে আপনি JDBC বা অন্যান্য সোর্স থেকে ডেটা পাঠাতে পারেন।
2. Excel রিপোর্টের জন্য Layout Design কাস্টমাইজ করা
JasperReports-এ Excel আউটপুটে রিপোর্টের লেআউট কাস্টমাইজ করতে কিছু গুরুত্বপূর্ণ টেকনিক রয়েছে। Excel ফরম্যাটে ডেটার সঠিকভাবে প্রদর্শন এবং ফরম্যাটিং কাস্টমাইজেশন নিশ্চিত করার জন্য আপনাকে JRXML ফাইলে কিছু সেটিংস পরিবর্তন করতে হবে।
Best Practices for Layout Design in Excel Output:
- Column Width Adjustments:
- Excel রিপোর্টে কলামের width কাস্টমাইজ করা গুরুত্বপূর্ণ, যাতে ডেটা সঠিকভাবে প্রদর্শিত হয়। এটি columnWidth এবং columnSpacing সেট করে করা যেতে পারে।
- Cell Formatting:
- Number, Date, and Currency Formatting কাস্টমাইজ করা যেতে পারে। Excel ফরম্যাটে ফিল্ডের মানের number format এবং currency format ইত্যাদি কাস্টমাইজ করা হয়।
- Header and Footer Formatting:
- Excel ফরম্যাটে headers এবং footers কাস্টমাইজ করা যেতে পারে, যেমন bold headers, alignment, background colors ইত্যাদি।
- Page Breaks and Grouping:
- Excel ফরম্যাটে পেজ ব্রেক এবং ডেটা গ্রুপিং কাস্টমাইজ করা যেতে পারে, যা রিপোর্টের লেআউটকে পরিষ্কার এবং আরও সংগঠিত করে।
Excel Layout Design Example in 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" pageWidth="595" pageHeight="842"
columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<!-- Column Header Band -->
<columnHeader>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="180" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Product Name]]></text>
</staticText>
<staticText>
<reportElement x="180" y="0" width="100" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Sales]]></text>
</staticText>
<staticText>
<reportElement x="280" y="0" width="100" height="30"/>
<textElement textAlignment="Center" verticalAlignment="Middle"/>
<text><![CDATA[Quantity]]></text>
</staticText>
</band>
</columnHeader>
<!-- Detail Band -->
<detail>
<band height="30">
<textField>
<reportElement x="0" y="0" width="180" height="30"/>
<textFieldExpression><![CDATA[$F{product_name}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="180" y="0" width="100" height="30"/>
<textFieldExpression><![CDATA[$F{sales}]]></textFieldExpression>
</textField>
<textField>
<reportElement x="280" y="0" width="100" height="30"/>
<textFieldExpression><![CDATA[$F{quantity}]]></textFieldExpression>
</textField>
</band>
</detail>
<!-- Summary Band -->
<summary>
<band height="30">
<staticText>
<reportElement x="0" y="0" width="180" height="30"/>
<textElement textAlignment="Right" verticalAlignment="Middle"/>
<text><![CDATA[Total Sales:]]></text>
</staticText>
<textField>
<reportElement x="180" y="0" width="100" height="30"/>
<textFieldExpression><![CDATA[$F{total_sales}]]></textFieldExpression>
</textField>
</band>
</summary>
</jasperReport>
ব্যাখ্যা:
- ColumnHeader band-এ Product Name, Sales, এবং Quantity এর কলাম হেডার রয়েছে, এবং সেগুলোর জন্য text alignment ও width কাস্টমাইজ করা হয়েছে।
- Detail band-এ প্রতিটি product এর sales এবং quantity ডেটা দেখানো হয়েছে, এবং এই ফিল্ডগুলো বিভিন্ন textField কম্পোনেন্টের মাধ্যমে কাস্টমাইজ করা হয়েছে।
- Summary band-এ Total Sales হিসাব করা হয়েছে এবং সেগুলোর জন্য right alignment এবং dynamic calculations ব্যবহার করা হয়েছে।
3. Excel Formatting Techniques
Excel ফরম্যাটে রিপোর্ট তৈরি করার সময় কিছু গুরুত্বপূর্ণ formatting টেকনিক ব্যবহার করা হয়:
1. Number Formatting:
Excel রিপোর্টে number formatting (যেমন, currency, percentage, decimal places ইত্যাদি) কাস্টমাইজ করা খুবই গুরুত্বপূর্ণ।
<textField>
<reportElement x="180" y="0" width="100" height="30"/>
<textFieldExpression><![CDATA[$F{sales}]]></textFieldExpression>
<textElement textAlignment="Right"/>
<patternExpression><![CDATA["$"#,##0.00]]></patternExpression> <!-- Currency formatting -->
</textField>
2. Text Alignment:
Excel রিপোর্টের সেলগুলির মধ্যে টেক্সটের alignment (যেমন left, center, right) কাস্টমাইজ করা যায়।
<textField>
<reportElement x="0" y="0" width="180" height="30"/>
<textElement textAlignment="Center"/>
<textFieldExpression><![CDATA[$F{product_name}]]></textFieldExpression>
</textField>
3. Column Width:
Excel ফরম্যাটে কলামের width কাস্টমাইজ করা খুবই গুরুত্বপূর্ণ, যাতে ডেটা পুরোপুরি প্রদর্শিত হয়।
<jasperReport ... columnWidth="200">
...
</jasperReport>
4. Styling Header and Footer:
Excel রিপোর্টের হেডার এবং ফুটারে font size, bold, italic ইত্যাদি কাস্টমাইজ করা যেতে পারে।
<staticText>
<reportElement x="0" y="0" width="180" height="30"/>
<textElement fontSize="14" isBold="true"/>
<text><![CDATA[Product Name]]></text>
</staticText>
5. Adding Borders to Cells:
আপনি সেলগুলির চারপাশে borders যোগ করতে পারেন, যা Excel রিপোর্টকে আরও পেশাদার এবং সুসংগঠিত করে তোলে।
<textField>
<reportElement x="0" y="0" width="180" height="30"/>
<textElement>
<font fontName="Arial" size="12"/>
</textElement>
<textFieldExpression><![CDATA[$F{product_name}]]></textFieldExpression>
<style>
<border left="1" right="1" top="1" bottom="1"/>
</style>
- Excel ফরম্যাটে Data Formatting এবং Layout Design JasperReports-এ কাস্টম রিপোর্ট ডিজাইন করতে খুবই গুরুত্বপূর্ণ।
- Column Width, Number Formatting, Text Alignment, and Borders কাস্টমাইজ করে Excel রিপোর্টের প্রদর্শন উন্নত করা যায়।
- JasperReports Studio এবং JRXML ফাইলের মাধ্যমে রিপোর্টের লেআউট কাস্টমাইজ করা যায়।
- JasperReports-এ Excel ফরম্যাটে রিপোর্ট তৈরি করার সময় Number Formatting, Text Alignment, Pattern Expression, এবং Cell Borders কাস্টমাইজ করা হলে রিপোর্টের রিডেবিলিটি এবং প্রফেশনাল লুক বৃদ্ধি পায়।
JasperReports ব্যবহার করে রিপোর্ট তৈরি করার সময় PDF এবং Excel এর মতো বিভিন্ন ফরম্যাটে রিপোর্ট এক্সপোর্ট করা একটি গুরুত্বপূর্ণ বিষয়। PDF এবং Excel এক্সপোর্টের জন্য বিশেষ কৌশল এবং Best Practices অনুসরণ করলে রিপোর্টের গুণমান এবং পারফরম্যান্স অনেক ভালো হয়। নিচে JasperReports এ PDF এবং Excel এক্সপোর্ট করার সময় অনুসরণ করার জন্য কিছু Best Practices বর্ণনা করা হয়েছে।
1. PDF Export এর Best Practices
PDF ফরম্যাটে রিপোর্ট এক্সপোর্ট করার জন্য JasperReports অনেক সুবিধা প্রদান করে, যেমন গ্রাফিক্যাল উপাদান, ফন্ট এবং লেআউট বজায় রেখে রিপোর্ট তৈরি করা। তবে, PDF এর জন্য কিছু অতিরিক্ত কৌশল ও পদ্ধতি রয়েছে যা কার্যকারিতা এবং অভিজ্ঞতা উন্নত করে।
Best Practices for PDF Export in JasperReports
Font Embedding:
- PDF ফাইলের সঠিক উপস্থাপনা নিশ্চিত করতে প্রয়োজনীয় ফন্টগুলো embed করা উচিত। বিশেষত যদি আপনি কাস্টম ফন্ট ব্যবহার করেন, তবে font embedding খুবই গুরুত্বপূর্ণ।
- JasperReports এ font embedding সক্ষম করতে
jasperreports.propertiesফাইলে ফন্ট সম্পর্কিত প্রপার্টি কনফিগার করতে হবে।
net.sf.jasperreports.default.font.name=Arial net.sf.jasperreports.default.font.size=12 net.sf.jasperreports.default.pdf.embedded=trueReport Pagination:
- দীর্ঘ রিপোর্টের জন্য পৃষ্ঠা বিভাজন সঠিকভাবে সেট করা গুরুত্বপূর্ণ। Page Breaks ব্যবহার করে রিপোর্টের দৃশ্যমানতা এবং পারফরম্যান্স উন্নত করা যায়।
<pageBreak />এই কৌশলটি বিশেষভাবে ব্যবহার করা হয় যখন রিপোর্টে অনেক ডেটা থাকে এবং আপনি প্রতিটি পৃষ্ঠার মধ্যে content বিভক্ত করতে চান।
- Image and Graphic Handling:
- গ্রাফিক্স এবং ছবি এক্সপোর্ট করার সময় রিপোর্টে নির্দিষ্ট
imageফাইল সাইজ কাস্টমাইজ করা যেতে পারে, যাতে ফাইল সাইজ বড় না হয় এবং পারফরম্যান্সের উপর প্রভাব না পড়ে। - Transparent Images: ছবির পেছনে অতিরিক্ত ব্যাকগ্রাউন্ড না রাখলে PDF ফাইলের সাইজ অনেক কম হবে।
- গ্রাফিক্স এবং ছবি এক্সপোর্ট করার সময় রিপোর্টে নির্দিষ্ট
- Optimizing for File Size:
- রিপোর্টের ফাইল সাইজ কমানোর জন্য image compression এবং vector graphics ব্যবহার করুন। JPEG বা PNG ইমেজ ফরম্যাট ব্যবহারে সাইজ কমানো যেতে পারে।
- Report Caching: রিকোয়েস্টের পরেও একই রিপোর্ট পুনরায় তৈরি না করার জন্য JasperReports ক্যাশিং সমর্থন করে।
Use
exportReportToPdfFile()Efficiently:- PDF export এর জন্য, রিপোর্ট ফাইলটি তৈরির পর
JasperExportManager.exportReportToPdfFile()মেথড ব্যবহার করুন। এটি দ্রুত PDF এক্সপোর্ট করতে সাহায্য করে।
JasperExportManager.exportReportToPdfFile(jasperPrint, "report.pdf");- PDF export এর জন্য, রিপোর্ট ফাইলটি তৈরির পর
Dynamic Content Scaling:
- Dynamic Content এর জন্য আপনি
StretchTypeএবংPrintWhenExpressionব্যবহার করতে পারেন, যাতে ডেটার উপযুক্ত স্থানায়ন এবং স্কেলিং নিশ্চিত করা যায়।
<textField> <reportElement x="0" y="0" width="200" height="20"/> <textElement/> <textFieldExpression><![CDATA[$F{description}]]></textFieldExpression> </textField>- Dynamic Content এর জন্য আপনি
- Ensure Proper Layout for Different Devices:
- রিপোর্টের লেআউটটি এমনভাবে তৈরি করুন যাতে mobile বা web এ দেখা গেলে সঠিকভাবে প্রদর্শিত হয়।
auto-page-breakব্যবহার করা যেতে পারে।
- রিপোর্টের লেআউটটি এমনভাবে তৈরি করুন যাতে mobile বা web এ দেখা গেলে সঠিকভাবে প্রদর্শিত হয়।
2. Excel Export এর Best Practices
Excel ফরম্যাটে রিপোর্ট এক্সপোর্টের জন্য, সাধারণত টেবিল ডেটা, ক্যালকুলেশন এবং গ্রাফিক্স সরবরাহ করা হয়। JasperReports ব্যবহার করে Excel ফরম্যাটে রিপোর্ট এক্সপোর্ট করার সময় কিছু বিশেষ কৌশল রয়েছে যা আপনাকে ফাইল সাইজ এবং পারফরম্যান্স নিয়ন্ত্রণ করতে সাহায্য করবে।
Best Practices for Excel Export in JasperReports
Use
XlsxFormat Instead ofXls:- XLSX ফরম্যাট ব্যবহার করার সময় ফাইল সাইজ কম এবং পারফরম্যান্স উন্নত হয়। XLS ফরম্যাটের তুলনায় XLSX আরও আধুনিক এবং কার্যকরী।
- JasperReports-এ Excel এক্সপোর্টের জন্য
JasperExportManager.exportReportToXlsxFile()মেথড ব্যবহার করা যেতে পারে।
JasperExportManager.exportReportToXlsxFile(jasperPrint, "report.xlsx");Control Excel Sheet Layout:
- Excel রিপোর্টে সঠিক sheet layout নিশ্চিত করার জন্য
pageBreakএবংcolumnWidthকাস্টমাইজ করা উচিত। - Cell Formatting: রিপোর্টের সেলে bold, underline, এবং background color নির্ধারণ করতে পারেন, যা Excel এ দেখতে আরও ভাল হয়।
<cell> <cellElement> <textElement> <font size="12" isBold="true"/> <backcolor>#E0E0E0</backcolor> </textElement> <text><![CDATA[$F{salesAmount}]]></text> </cellElement> </cell>- Excel রিপোর্টে সঠিক sheet layout নিশ্চিত করার জন্য
Exporting Large Reports:
- Excel রিপোর্টে large data sets এক্সপোর্ট করার সময়
memory leakবাout of memoryসমস্যা হতে পারে। এর জন্য,JRXlsExporterব্যবহার করে আপনি মেমোরি-দক্ষ এক্সপোর্ট করতে পারেন।
JRXlsExporter exporter = new JRXlsExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("report.xlsx"));- Excel রিপোর্টে large data sets এক্সপোর্ট করার সময়
- Avoid Using Too Many Styles:
- Excel এক্সপোর্টের সময় excessive styles ব্যবহার করলে রিপোর্টের ফাইল সাইজ অনেক বেড়ে যায়। শুধুমাত্র প্রয়োজনীয় স্টাইল ব্যবহার করুন।
hyperlinkবাimage embeddingExcel-এ সংরক্ষণ করার সময় ফাইল সাইজ বাড়াতে পারে, তাই এগুলির ব্যবহার কমানোর চেষ্টা করুন।
Sheet Names and Dynamic Titles:
- Excel রিপোর্টের শিটের নাম ডায়নামিকভাবে পরিবর্তন করতে Report Parameters ব্যবহার করুন।
parameters.put("SheetName", "Sales Report");- Break Large Reports into Multiple Sheets:
- যদি রিপোর্টের মধ্যে অনেক ডেটা থাকে, তবে রিপোর্টটি multiple sheets এ ভাগ করা উচিত। এতে ডেটা আরও সুগমভাবে পড়া যাবে।
3. Combining PDF and Excel Export Options
এখন, আপনি যদি একসাথে PDF এবং Excel এক্সপোর্ট করতে চান, তাহলে আপনি JasperExportManager-এর মাধ্যমে আলাদা আলাদা ফাইল তৈরি করতে পারেন।
JasperExportManager.exportReportToPdfFile(jasperPrint, "report.pdf");
JasperExportManager.exportReportToXlsxFile(jasperPrint, "report.xlsx");
এছাড়া, custom export button দিয়ে ব্যবহারকারীকে PDF অথবা Excel এক্সপোর্টের সুযোগ দিতে পারেন, যাতে ব্যবহারকারী নিজেই চয়ন করতে পারে।
- PDF Export: Font embedding, Page breaks, Image handling, এবং dynamic content scaling JasperReports এ PDF এক্সপোর্টের পারফরম্যান্স এবং ভিজ্যুয়াল ইফেক্ট উন্নত করতে সাহায্য করে।
- Excel Export: XLSX ফরম্যাট ব্যবহার, sheet layout, cell formatting, এবং large data handling নিশ্চিত করার জন্য গুরুত্বপূর্ণ।
- Combination: আপনি সহজেই PDF এবং Excel এক্সপোর্টের ফিচার একসাথে ব্যবহার করতে পারেন JasperReports এর মাধ্যমে, যাতে রিপোর্ট একাধিক ফরম্যাটে প্রস্তুত করা যায়।
Best Practices অনুসরণ করে JasperReports এর PDF এবং Excel এক্সপোর্টের পারফরম্যান্স এবং ফাইল সাইজ নিয়ন্ত্রণ করতে পারবেন, এবং রিপোর্টটি আরও কার্যকর এবং ব্যবহারকারী-বান্ধব করতে পারবেন।
Read more