Apache POI ব্যবহার করে Excel ফাইল তৈরি করা খুবই সহজ এবং এতে আপনি HSSF (Horrible Spreadsheet Format) এবং XSSF (XML Spreadsheet Format) দুটি ফরম্যাট ব্যবহার করতে পারেন। HSSF ফরম্যাটটি Excel 97-2003 (.xls) ফাইল তৈরি করার জন্য ব্যবহৃত হয়, আর XSSF ফরম্যাটটি Excel 2007 এবং এর পরবর্তী সংস্করণ (.xlsx) ফাইল তৈরি করতে ব্যবহৃত হয়।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে HSSF এবং XSSF ব্যবহার করে Excel ফাইল তৈরি করা যায়।
১. HSSF (Horrible Spreadsheet Format) - .xls ফাইল তৈরি
HSSF ফরম্যাটটি পুরনো Excel ফাইল তৈরি করতে ব্যবহৃত হয়। এর মাধ্যমে আপনি .xls ফাইল তৈরি করতে পারবেন।
উদাহরণ: .xls ফাইল তৈরি করা
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateXlsFile {
public static void main(String[] args) throws IOException {
// নতুন HSSFWorkbook অবজেক্ট তৈরি
HSSFWorkbook workbook = new HSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Sheet1");
// রো এবং সেল তৈরি
Row row = sheet.createRow(0); // প্রথম রো
Cell cell = row.createCell(0); // প্রথম সেল
cell.setCellValue("Hello, Apache POI!");
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে!");
}
}
কোড ব্যাখ্যা:
- HSSFWorkbook: এটি পুরনো
.xlsফাইল তৈরি করতে ব্যবহৃত হয়। - Sheet: Excel শীট তৈরি করা।
- Row: একাধিক রো তৈরি করা (এখানে একটিই তৈরি করা হয়েছে)।
- Cell: শীটে সেল তৈরি করা এবং সেল ভ্যালু সেট করা।
- FileOutputStream: ফাইলের মধ্যে লেখা এবং সেভ করার জন্য।
২. XSSF (XML Spreadsheet Format) - .xlsx ফাইল তৈরি
XSSF ফরম্যাটটি নতুন Excel (.xlsx) ফাইল তৈরি করতে ব্যবহৃত হয়। এটি আধুনিক Excel ফাইল সিস্টেমের জন্য উপযুক্ত এবং বড় ডেটা সেটের জন্য আরও ভালো পারফরমেন্স দেয়।
উদাহরণ: .xlsx ফাইল তৈরি করা
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateXlsxFile {
public static void main(String[] args) throws IOException {
// নতুন XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Sheet1");
// রো এবং সেল তৈরি
Row row = sheet.createRow(0); // প্রথম রো
Cell cell = row.createCell(0); // প্রথম সেল
cell.setCellValue("Hello, Apache POI!");
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("workbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে!");
}
}
কোড ব্যাখ্যা:
- XSSFWorkbook: এটি নতুন
.xlsxফাইল তৈরি করতে ব্যবহৃত হয়। - Sheet: Excel শীট তৈরি করা।
- Row: একাধিক রো তৈরি করা (এখানে একটিই তৈরি করা হয়েছে)।
- Cell: শীটে সেল তৈরি করা এবং সেল ভ্যালু সেট করা।
- FileOutputStream: ফাইল আউটপুট তৈরি এবং সেভ করা।
৩. Excel ফাইলে Formatting যোগ করা
Excel ফাইলের সেলগুলির জন্য font, color, border, alignment ইত্যাদি ফরম্যাটিং যোগ করা সম্ভব।
উদাহরণ: সেলে ফরম্যাটিং যোগ করা
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFColor;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateXlsxWithFormatting {
public static void main(String[] args) throws IOException {
// নতুন XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Formatted Sheet");
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// ফন্ট সেট করা
XSSFFont font = (XSSFFont) workbook.createFont();
font.setBold(true);
font.setColor(new XSSFColor(java.awt.Color.RED)); // লাল রঙের ফন্ট
style.setFont(font);
// সেল এর অ্যালাইনমেন্ট
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
// রো তৈরি
Row row = sheet.createRow(0);
// ফরম্যাটেড সেল তৈরি
Cell cell = row.createCell(0);
cell.setCellValue("Formatted Text");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("formattedWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("ফরম্যাটেড Excel ফাইল তৈরি হয়েছে!");
}
}
কোড ব্যাখ্যা:
- XSSFFont: ফন্ট ফরম্যাট করা (এখানে Bold এবং Red Color ফন্ট ব্যবহার করা হয়েছে)।
- CellStyle: সেল স্টাইল তৈরি করে, যেমন alignment, font, এবং background color।
- setAlignment() এবং setVerticalAlignment(): সেলের অ্যালাইনমেন্ট সেট করা।
৪. Multiple Sheets এবং Complex Data Structure
একটি Excel ফাইলে একাধিক শীট এবং বিভিন্ন ধরনের ডেটা সংরক্ষণ করা সম্ভব। এখানে একটি উদাহরণ দেওয়া হলো যেখানে দুটি শীট তৈরি করা হয়েছে।
উদাহরণ: Multiple Sheets তৈরি করা
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class CreateMultipleSheets {
public static void main(String[] args) throws IOException {
// নতুন XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// প্রথম শীট তৈরি
Sheet sheet1 = workbook.createSheet("Sheet1");
Row row1 = sheet1.createRow(0);
row1.createCell(0).setCellValue("Data for Sheet1");
// দ্বিতীয় শীট তৈরি
Sheet sheet2 = workbook.createSheet("Sheet2");
Row row2 = sheet2.createRow(0);
row2.createCell(0).setCellValue("Data for Sheet2");
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("multipleSheets.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Multiple sheets সহ Excel ফাইল তৈরি হয়েছে!");
}
}
সারাংশ
Apache POI ব্যবহার করে Excel ফাইল তৈরি করা খুবই সহজ এবং শক্তিশালী। আপনি HSSF (পুরনো .xls ফাইল) এবং XSSF (নতুন .xlsx ফাইল) ফরম্যাট ব্যবহার করে Excel ফাইল তৈরি করতে পারেন। এছাড়া আপনি cell styling, multiple sheets, data insertion ইত্যাদি কাজ করতে পারেন। যেহেতু Apache POI একটি অত্যন্ত ফিচার-প্যাকড লাইব্রেরি, এটি আপনার Excel ডেটা ম্যানিপুলেশনকে সহজ এবং কার্যকরী করে তোলে।
Apache POI লাইব্রেরিতে HSSF এবং XSSF দুটি কম্পোনেন্ট রয়েছে, যা মূলত Microsoft Excel ফাইলের সাথে কাজ করার জন্য ব্যবহৃত হয়। তবে এই দুটি কম্পোনেন্টের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে, বিশেষ করে ফাইল ফরম্যাটের দিক থেকে। নিচে HSSF এবং XSSF এর মধ্যে পার্থক্যগুলোর বিস্তারিত আলোচনা করা হল।
১. ফাইল ফরম্যাট
- HSSF (Horrible Spreadsheet Format):
- HSSF মূলত Excel 97-2003 ফরম্যাট (.xls) এর জন্য ব্যবহৃত হয়।
- এটি পুরোনো Excel ফাইল ফরম্যাটের সাথে সম্পৃক্ত, যেখানে ডেটা 2GB এর কম আকারের হতে পারে এবং এটি 65,536 রো (rows) এবং 256 কলাম (columns) পর্যন্ত সীমাবদ্ধ।
- XSSF (XML Spreadsheet Format):
- XSSF Excel 2007 এবং পরবর্তী ভার্সনগুলির জন্য ব্যবহৃত হয়, যা .xlsx ফরম্যাটে সেভ হয়।
- এটি XML ভিত্তিক ফাইল ফরম্যাট এবং এতে বড় আকারের ডেটা সংরক্ষণ করা সম্ভব (ফাইল আকার 2GB এরও বেশি হতে পারে)। XSSF ফাইলগুলির মধ্যে 1,048,576 রো এবং 16,384 কলাম পর্যন্ত ডেটা ধারণ করার ক্ষমতা রয়েছে।
২. ডেটা আকার এবং সীমা
- HSSF:
- HSSF এর ফাইল আকার 2GB এর মধ্যে সীমাবদ্ধ এবং এটি 65,536 রো এবং 256 কলাম পর্যন্ত সমর্থন করে।
- XSSF:
- XSSF এর ফাইল আকার 2GB এর বেশি হতে পারে এবং এটি 1,048,576 রো এবং 16,384 কলাম পর্যন্ত সমর্থন করে, যা অনেক বড় ডেটা সেট ব্যবস্থাপনা করতে সহায়ক।
৩. ফাইল গঠন এবং পারফরম্যান্স
- HSSF:
- HSSF ফাইল ফরম্যাটে ফাইলের গঠন পুরোনো Binary ফরম্যাটে থাকে।
- এই ফরম্যাটে কিছু সীমাবদ্ধতা থাকলেও, এটি পুরানো Excel ভার্সনের জন্য উপযুক্ত।
- XSSF:
- XSSF একটি XML-based ফরম্যাট, যা আরও আধুনিক এবং বেশি নমনীয়। এতে ডেটার আর্কিটেকচার এবং পারফরম্যান্স অনেক উন্নত, বিশেষ করে যখন বড় ডেটা সেট কাজ করতে হয়।
৪. ফাইল তৈরি এবং সম্পাদনা
- HSSF:
- HSSF ফাইল তৈরি বা সম্পাদনা করার জন্য পুরোনো Excel ফাইলের জন্য কার্যকরী।
- নতুন ফিচার যেমন Conditional Formatting, Charting ইত্যাদি কিছুটা সীমিত।
- XSSF:
- XSSF ফাইল তৈরি এবং সম্পাদনা করার ক্ষেত্রে Excel 2007 এবং পরবর্তী সংস্করণের সমস্ত নতুন ফিচার, যেমন Conditional Formatting, Charting, Sparklines ইত্যাদি সমর্থন করে।
৫. মেমরি ব্যবহারের পার্থক্য
- HSSF:
- HSSF মেমরি ব্যবহারে কিছুটা বেশি হতে পারে, কারণ এটি পুরোনো ফরম্যাট এবং একটি বাইনারি ফাইল স্টোরেজ ব্যবস্থার উপর ভিত্তি করে তৈরি।
- XSSF:
- XSSF আরও মেমরি দক্ষ, কারণ এটি XML-based ফরম্যাটে ডেটা পরিচালনা করে এবং বড় ডেটা সেটের জন্য অনেক বেশি উপযোগী।
৬. বড় ডেটার জন্য উপযোগিতা
- HSSF:
- HSSF পুরোনো ফরম্যাট হওয়ায় এটি বড় ডেটা সেটের জন্য খুবই সীমাবদ্ধ এবং এর পারফরম্যান্স অনেক কম।
- XSSF:
- XSSF আধুনিক ফরম্যাট হওয়ায় এটি বড় ডেটা সেট এবং জটিল ডকুমেন্টের জন্য অনেক বেশি উপযোগী এবং এর পারফরম্যান্স অনেক উন্নত।
৭. ফিচার সমর্থন
- HSSF:
- HSSF পুরোনো ফাইল ফরম্যাটের জন্য সীমিত ফিচার সমর্থন করে এবং কিছু নতুন ফিচার, যেমন Sparklines, Pivot Tables, এবং Cell Styles এর পূর্ণ সমর্থন নেই।
- XSSF:
- XSSF সমস্ত আধুনিক Excel ফিচার সমর্থন করে, যেমন Sparklines, Pivot Tables, Cell Styles, Charts, ইত্যাদি। এটি Excel 2007 এবং তার পরবর্তী সংস্করণের জন্য আদর্শ।
সারাংশ
- HSSF: এটি .xls ফাইল ফরম্যাটের জন্য ব্যবহৃত এবং পুরোনো Excel সংস্করণের জন্য উপযুক্ত। এটি 65,536 রো এবং 256 কলাম পর্যন্ত সীমাবদ্ধ।
- XSSF: এটি .xlsx ফাইল ফরম্যাটের জন্য ব্যবহৃত, যা Excel 2007 এবং পরবর্তী সংস্করণের সাথে সামঞ্জস্যপূর্ণ। এটি বড় ডেটা সেট এবং আধুনিক ফিচারের জন্য উপযুক্ত, যেমন 1,048,576 রো এবং 16,384 কলাম।
যদি আপনি পুরোনো Excel 97-2003 ফাইলের সাথে কাজ করছেন, তবে HSSF ব্যবহার করুন, কিন্তু যদি আপনার Excel 2007 বা তার পরবর্তী ভার্সন বা বড় ডেটা সেটের প্রয়োজন হয়, তবে XSSF ব্যবহার করা উচিত।
Apache POI লাইব্রেরি ব্যবহার করে আপনি Excel ফাইল তৈরি করতে, সম্পাদনা করতে, এবং ডেটা ম্যানিপুলেট করতে পারবেন। এখানে আমরা Workbook, Sheet, Row, এবং Cell তৈরির প্রক্রিয়া আলোচনা করব, যা একটি Excel ফাইলের মূল উপাদান।
1. Workbook তৈরি করা
Workbook হল Excel ফাইলের মূল অবজেক্ট। এটি একটি বা একাধিক Sheet ধারণ করে। Apache POI তে HSSFWorkbook (এটি .xls ফাইলের জন্য) এবং XSSFWorkbook (এটি .xlsx ফাইলের জন্য) ব্যবহার করা হয়।
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelExample {
public static void main(String[] args) throws IOException {
// নতুন একটি Workbook তৈরি করা (XSSFWorkbook Excel 2007 এবং পরবর্তী সংস্করণের জন্য)
Workbook workbook = new XSSFWorkbook();
// Workbook-এ নতুন Sheet যোগ করা
Sheet sheet = workbook.createSheet("Sheet1");
// Excel ফাইল সংরক্ষণ করা
try (FileOutputStream fileOut = new FileOutputStream("workbook_example.xlsx")) {
workbook.write(fileOut);
}
// Workbook বন্ধ করা
workbook.close();
}
}
এখানে, আমরা XSSFWorkbook ব্যবহার করেছি যা .xlsx ফাইল ফরম্যাটের জন্য উপযুক্ত।
2. Sheet তৈরি করা
Sheet হল একটি Excel ফাইলের পাতা (tab)। একটি Workbook-এ এক বা একাধিক Sheet থাকতে পারে। নতুন Sheet তৈরি করতে createSheet() মেথড ব্যবহার করা হয়।
// Sheet তৈরি করা
Sheet sheet = workbook.createSheet("Sheet1");
আপনি চাইলে Sheet এর নাম পরিবর্তন করতে পারেন:
sheet = workbook.createSheet("CustomSheetName");
3. Row তৈরি করা
Row একটি একক লাইন যা সেলে তথ্য ধারণ করে। Sheet এর মধ্যে একটি Row তৈরি করতে createRow() মেথড ব্যবহার করা হয়। Row এর জন্য ইনডেক্স দেওয়া হয়, যেটি 0 থেকে শুরু হয়।
// Row তৈরি করা (Row ইনডেক্স 0)
Row row = sheet.createRow(0);
এখানে 0 হল প্রথম রো। আপনি যদি দ্বিতীয় রো তৈরি করতে চান, তবে ইনডেক্স হবে 1।
4. Cell তৈরি করা
একটি Row তে একাধিক Cell থাকতে পারে। Cell হল একটি একক তথ্য স্থান যা একটি নির্দিষ্ট রো এবং কলামে থাকে। Cell তৈরি করতে createCell() মেথড ব্যবহার করা হয়, যেখানে ইনডেক্স দেওয়া হয় (যেটি 0 থেকে শুরু হয়)।
// Cell তৈরি করা (Cell ইনডেক্স 0)
Cell cell = row.createCell(0);
Cell এর মধ্যে ডেটা যোগ করতে আপনি setCellValue() মেথড ব্যবহার করতে পারেন। এই মেথডটি বিভিন্ন ডেটা টাইপ সাপোর্ট করে, যেমন স্ট্রিং, নাম্বার, তারিখ ইত্যাদি।
// Text যোগ করা
cell.setCellValue("Hello, Apache POI!");
// Integer যোগ করা
cell = row.createCell(1);
cell.setCellValue(100);
// Double যোগ করা
cell = row.createCell(2);
cell.setCellValue(99.99);
এখন, আপনার একটি পূর্ণ Excel ফাইল তৈরি হয়েছে, যার মধ্যে একটি Sheet, একটি Row, এবং বিভিন্ন Cell আছে।
পূর্ণ উদাহরণ
নিচে একটি সম্পূর্ণ উদাহরণ দেওয়া হল যেখানে একটি Workbook তৈরি করা হয়েছে, এর মধ্যে একটি Sheet, একটি Row, এবং তার ভিতরে কয়েকটি Cell তৈরি করা হয়েছে:
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelExample {
public static void main(String[] args) throws IOException {
// নতুন একটি Workbook তৈরি করা (XSSFWorkbook Excel 2007 এবং পরবর্তী সংস্করণের জন্য)
Workbook workbook = new XSSFWorkbook();
// Workbook-এ নতুন Sheet যোগ করা
Sheet sheet = workbook.createSheet("Employee Data");
// প্রথম Row তৈরি করা
Row row = sheet.createRow(0);
// প্রথম Cell এ ডেটা ইনসার্ট করা
Cell cell = row.createCell(0);
cell.setCellValue("Name");
// দ্বিতীয় Cell এ ডেটা ইনসার্ট করা
cell = row.createCell(1);
cell.setCellValue("Age");
// তৃতীয় Cell এ ডেটা ইনসার্ট করা
cell = row.createCell(2);
cell.setCellValue("Salary");
// দ্বিতীয় Row তৈরি করা
row = sheet.createRow(1);
// প্রথম Cell এ ডেটা ইনসার্ট করা
row.createCell(0).setCellValue("John Doe");
row.createCell(1).setCellValue(30);
row.createCell(2).setCellValue(55000);
// তৃতীয় Row তৈরি করা
row = sheet.createRow(2);
// দ্বিতীয় Employee Data যোগ করা
row.createCell(0).setCellValue("Jane Smith");
row.createCell(1).setCellValue(25);
row.createCell(2).setCellValue(60000);
// Excel ফাইল সংরক্ষণ করা
try (FileOutputStream fileOut = new FileOutputStream("employee_data.xlsx")) {
workbook.write(fileOut);
}
// Workbook বন্ধ করা
workbook.close();
}
}
সারাংশ
Apache POI ব্যবহার করে আপনি খুব সহজে Excel ফাইল তৈরি, সম্পাদনা এবং ডেটা প্রক্রিয়াকরণ করতে পারবেন। উপরের উদাহরণে, Workbook, Sheet, Row, এবং Cell তৈরি করার প্রক্রিয়া বিস্তারিতভাবে দেখানো হয়েছে। আপনি বিভিন্ন ধরনের ডেটা যেমন স্ট্রিং, নাম্বার, এবং ডেটা টাইপ সেলগুলিতে যোগ করতে পারেন এবং এই ফাইলটি সহজেই .xlsx ফরম্যাটে সংরক্ষণ করতে পারেন।
Apache POI লাইব্রেরি ব্যবহার করে Excel ফাইল তৈরি এবং সেভ করা যায়। আপনি XLS (পূর্ববর্তী Excel ফরম্যাট) এবং XLSX (আধুনিক Excel ফরম্যাট) উভয় ধরনের ফাইল সেভ করতে পারবেন। নিচে দুটি ফাইল ফরম্যাটের জন্য উদাহরণ দেওয়া হলো।
1. XLS ফাইল সেভ করা (HSSF)
XLS ফাইল সেভ করার জন্য HSSF (Horrible Spreadsheet Format) ক্লাস ব্যবহার করা হয়, যা পুরনো Excel ফাইল ফরম্যাটের জন্য সমর্থিত।
উদাহরণ: XLS ফাইল তৈরি এবং সেভ করা
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class SaveXLSFileExample {
public static void main(String[] args) throws IOException {
// HSSFWorkbook দিয়ে নতুন Excel ফাইল তৈরি
HSSFWorkbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// নতুন রো এবং সেল তৈরি করা
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, Apache POI!");
// ফাইল সেভ করা
try (FileOutputStream fileOut = new FileOutputStream("example.xls")) {
workbook.write(fileOut);
}
workbook.close();
System.out.println("XLS ফাইল সফলভাবে সেভ হয়েছে!");
}
}
এই কোডটি একটি .xls ফাইল তৈরি করবে এবং তাতে একটি সেল-এ "Hello, Apache POI!" লেখার পর সেই ফাইলটি সেভ করবে।
2. XLSX ফাইল সেভ করা (XSSF)
XLSX ফাইল সেভ করার জন্য XSSF (XML Spreadsheet Format) ক্লাস ব্যবহার করা হয়, যা আধুনিক Excel ফরম্যাটের জন্য সমর্থিত।
উদাহরণ: XLSX ফাইল তৈরি এবং সেভ করা
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class SaveXLSXFileExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook দিয়ে নতুন Excel ফাইল তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// নতুন রো এবং সেল তৈরি করা
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello, Apache POI!");
// ফাইল সেভ করা
try (FileOutputStream fileOut = new FileOutputStream("example.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
System.out.println("XLSX ফাইল সফলভাবে সেভ হয়েছে!");
}
}
এই কোডটি একটি .xlsx ফাইল তৈরি করবে এবং তাতে একটি সেল-এ "Hello, Apache POI!" লেখার পর সেই ফাইলটি সেভ করবে।
সারাংশ
Apache POI ব্যবহার করে Excel ফাইলের দুটি প্রধান ফরম্যাট XLS এবং XLSX এ ফাইল সেভ করা সম্ভব। HSSF ব্যবহার করে XLS ফাইল এবং XSSF ব্যবহার করে XLSX ফাইল তৈরি এবং সেভ করা হয়। উক্ত ফাইলগুলিতে সেল তৈরি, ডেটা প্রবেশ, এবং সেভ করা একটি সাধারণ এবং সহজ প্রক্রিয়া।
SXSSF (Streaming XML Spreadsheet Format) হল Apache POI এর একটি বিশেষ মডিউল যা খুব বড় Excel (.xlsx) ফাইলের জন্য উপযুক্ত। এটি মূলত XSSF এর উপর ভিত্তি করে তৈরি, তবে বড় ডেটাসেট পরিচালনা করার জন্য এটি আরও মেমরি-সংরক্ষণশীল। SXSSF ব্যবহার করে আপনি খুব বড় পরিমাণ ডেটা একসাথে মেমোরিতে লোড না করে Excel ফাইল তৈরি করতে পারেন। এটি বড় Excel ফাইল তৈরি ও লেখার সময় ফাইল লেখার পদ্ধতি পরিবর্তন করে, যাতে মেমোরি ব্যবহারের পরিমাণ কম থাকে।
SXSSF শুধুমাত্র write অপারেশন সমর্থন করে এবং লেখার সময় একে একে ডেটা stream করে, যাতে memory efficiency বজায় থাকে।
SXSSF দিয়ে বড় ডেটাসেট নিয়ে কাজ করার উপায়
1. SXSSF এর মৌলিক ধারণা
- SXSSF ব্যবহার করলে আপনার ডেটাসেটের প্রতিটি রো তৈরি করার সময় তা মেমোরিতে রাখা হয় না। বরং প্রতিটি রো লিখে দেওয়ার পরে সেটি মেমোরি থেকে মুছে ফেলা হয়। এই কারণে, বড় ডেটাসেট নিয়ে কাজ করার সময় এটি খুবই কার্যকরী।
- এই মডিউলে SXSSFWorkbook ব্যবহার করা হয়, যা XSSFWorkbook এর মতই, তবে একে একে ডেটা লেখার জন্য এটি অনেক কম মেমোরি ব্যবহার করে।
- SXSSF শুধুমাত্র লেখার জন্য উপযোগী এবং পড়ার জন্য ব্যবহার করা যায় না। অর্থাৎ, একবার ডেটা লেখার পরে ফাইলটি .xlsx ফরম্যাটে সেভ করে নিতে হয়।
2. SXSSF দিয়ে একটি বড় Excel ফাইল তৈরি করা
SXSSF দিয়ে একটি বড় Excel ফাইল তৈরি করার উদাহরণ দেওয়া হলো যেখানে অনেক রো (যেমন ১০০,০০০) একসাথে লেখার জন্য কাজ করা হয়েছে। এই ফাইলটি মেমোরি ব্যবহার করে না, এবং ডেটা stream করে লেখে।
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class LargeExcelFileCreator {
public static void main(String[] args) throws IOException {
// Create a new SXSSFWorkbook (Streaming XML Workbook)
SXSSFWorkbook workbook = new SXSSFWorkbook(100); // Keep 100 rows in memory at a time
Sheet sheet = workbook.createSheet("Large Data");
// Write header row
Row header = sheet.createRow(0);
header.createCell(0).setCellValue("ID");
header.createCell(1).setCellValue("Name");
header.createCell(2).setCellValue("Age");
// Write data rows
for (int i = 1; i <= 100000; i++) {
Row row = sheet.createRow(i);
row.createCell(0).setCellValue(i); // ID
row.createCell(1).setCellValue("Name " + i); // Name
row.createCell(2).setCellValue(20 + (i % 30)); // Age (20-50)
}
// Write the workbook to a file
try (FileOutputStream fileOut = new FileOutputStream("large_data.xlsx")) {
workbook.write(fileOut);
}
// Dispose of temporary files created by SXSSFWorkbook
workbook.dispose();
}
}
কোড ব্যাখ্যা:
- SXSSFWorkbook: এটি Streaming XML Workbook এবং এতে 100 মানে হচ্ছে, প্রতিটি ১০০টি রো মেমোরিতে থাকবে। এর পরবর্তী রো লেখার সময় পুরনো রো মেমোরি থেকে মুছে ফেলা হবে।
- CreateSheet(): একটি নতুন শিট তৈরি করা হচ্ছে।
- CreateRow(): প্রতিটি রো তৈরি করা হচ্ছে।
- Cell Creation: প্রতিটি সেলে ডেটা লিখা হচ্ছে।
- File Output: পুরো workbook ফাইল আউটপুটে লেখা হচ্ছে।
- Dispose(): এটি সমস্ত মেমোরি ক্লিয়ার করে, যাতে SXSSFWorkbook সঠিকভাবে কাজ করতে পারে এবং মেমোরি ফাঁকা থাকে।
3. SXSSF-এর সুবিধা এবং সীমাবদ্ধতা
সুবিধা:
- Memory Efficiency: বড় ডেটাসেট (যেমন লক্ষ লক্ষ রো) পরিচালনা করার জন্য মেমোরি ব্যবহার অনেক কম থাকে। এটি streaming পদ্ধতি ব্যবহার করে একে একে ডেটা লেখার মাধ্যমে মেমোরি ব্যবহার কমায়।
- Large File Creation: বিশাল Excel ফাইল তৈরি করার সময় দ্রুত কাজ করে এবং মেমোরি ব্যবহারের পরিমাণ কম থাকে।
- No Need to Load Entire Data: সমস্ত ডেটা একবারে মেমোরিতে লোড করতে হয় না, যা বড় ডেটাসেট নিয়ে কাজ করার জন্য উপকারী।
সীমাবদ্ধতা:
- Read Operations Not Supported: SXSSF শুধুমাত্র লেখার জন্য ব্যবহৃত হয়, আপনি এটি দিয়ে ডেটা পড়তে পারবেন না। পড়ার জন্য আপনাকে XSSF ব্যবহার করতে হবে।
- Limited to Writing: SXSSF শুধুমাত্র লেখার জন্য, অর্থাৎ একে একে ডেটা লেখার জন্য ব্যবহার করা হয়। পড়া বা সম্পাদনা করার জন্য আপনাকে অন্য মডিউল ব্যবহার করতে হবে।
4. SXSSF-এর Performance টিউনিং
- Row Buffering: SXSSF দিয়ে অনেক রো লেখার সময় 100 রো পর্যন্ত মেমোরিতে রেখে, তার পরবর্তী রো লেখার জন্য পূর্ববর্তী রো মুছে ফেলা হয়। এই সংখ্যাটি আপনার মেমোরির উপর নির্ভর করে অ্যাডজাস্ট করা যেতে পারে। আপনি যদি কম মেমোরি ব্যবহার করতে চান, তবে এই সংখ্যা কমিয়ে দিতে পারেন।
- File Writer Buffering: ফাইল লেখার জন্য BufferedOutputStream ব্যবহার করা যেতে পারে, যা আরও দ্রুত লেখার জন্য সাহায্য করবে।
BufferedOutputStream bufferedOut = new BufferedOutputStream(new FileOutputStream("large_data.xlsx"));
workbook.write(bufferedOut);
bufferedOut.close();
সারাংশ
SXSSF একটি অত্যন্ত কার্যকরী মডিউল যখন আপনি বড় Excel (.xlsx) ডেটাসেট নিয়ে কাজ করছেন। এটি মেমোরি ব্যবহারের পরিমাণ কমাতে সহায়তা করে এবং বড় ফাইল দ্রুত এবং কার্যকরীভাবে তৈরি করতে পারে। তবে, এটি শুধুমাত্র লেখার জন্য ব্যবহৃত হয় এবং read অপারেশন সমর্থন করে না। SXSSF দিয়ে আপনি খুব সহজে বড় ডেটাসেট লেখার সময় মেমোরি ব্যবহারের পরিমাণ নিয়ন্ত্রণ করতে পারেন।
Read more