Apache POI ব্যবহার করে আপনি Excel ফাইলের cell formatting এবং cell style কাস্টমাইজ করতে পারেন। এতে ফন্ট, ব্যাকগ্রাউন্ড রঙ, বর্ডার, অ্যালাইনমেন্ট, নম্বর ফরম্যাট এবং আরও অনেক কিছু শামিল থাকতে পারে।
এখানে আমরা বিস্তারিতভাবে দেখব কিভাবে cell formatting এবং cell style ব্যবহার করা যায়।
১. Cell Style তৈরি করা
CellStyle ক্লাসটি Excel সেলের জন্য বিভিন্ন ফরম্যাট এবং স্টাইল অ্যাপ্লাই করতে ব্যবহৃত হয়। এতে আপনি font, alignment, border, background color, data format ইত্যাদি কাস্টমাইজ করতে পারেন।
উদাহরণ: Simple Cell Style তৈরি করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelCellStyleExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Styled Sheet");
// নতুন সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// ফন্ট তৈরি এবং সেট করা
Font font = workbook.createFont();
font.setBold(true);
font.setColor(IndexedColors.RED.getIndex()); // লাল রঙের ফন্ট
style.setFont(font);
// সেলের অ্যালাইনমেন্ট সেট করা
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Styled Cell");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("styledWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং সেল স্টাইল অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- Font: সেলের ফন্টের স্টাইল নির্ধারণ করতে এটি ব্যবহৃত হয়। এখানে Bold এবং Red ফন্ট রঙ সেট করা হয়েছে।
- CellStyle: সেলের স্টাইল নির্ধারণ করতে ব্যবহৃত হয়। এখানে সেলের alignment, font এবং vertical alignment নির্ধারণ করা হয়েছে।
- setCellStyle(): নির্দিষ্ট সেলে স্টাইল অ্যাপ্লাই করা হয়।
২. Cell Formatting (নম্বর ফরম্যাটিং)
Excel সেলে নম্বর বা তারিখ ফরম্যাটিংও করা যায়। DataFormat ক্লাসটি আপনাকে নম্বর ফরম্যাট বা তারিখের জন্য স্টাইল নির্ধারণ করতে সাহায্য করে।
উদাহরণ: সেলে নম্বর ফরম্যাটিং করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class NumberFormattingExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Number Formatting");
// নতুন সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// নম্বর ফরম্যাট তৈরি
DataFormat format = workbook.createDataFormat();
style.setDataFormat(format.getFormat("#,##0.00")); // নম্বর ফরম্যাট
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং নম্বর সেট করা
Cell cell = row.createCell(0);
cell.setCellValue(12345.6789);
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("numberFormattedWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং নম্বর ফরম্যাটিং অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- DataFormat: সেল নম্বর বা তারিখের ফরম্যাটিং জন্য ব্যবহৃত হয়। এখানে #,##0.00 ফরম্যাটটি দশমিক সহ হাজারের সেপারেটর যোগ করে।
- setDataFormat(): সেল স্টাইলের জন্য নম্বর বা তারিখের ফরম্যাট নির্ধারণ করা হয়।
৩. Cell Background Color (ব্যাকগ্রাউন্ড রঙ)
সেলের ব্যাকগ্রাউন্ড রঙ পরিবর্তন করার জন্য আপনি setFillForegroundColor() এবং setFillPattern() ব্যবহার করতে পারেন।
উদাহরণ: সেলের ব্যাকগ্রাউন্ড রঙ সেট করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class CellBackgroundColorExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Background Color");
// নতুন সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// ব্যাকগ্রাউন্ড রঙ সেট করা
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); // হলুদ রঙ
style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // সলিড ব্যাকগ্রাউন্ড
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Cell with Background Color");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("backgroundColorWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং ব্যাকগ্রাউন্ড রঙ অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- setFillForegroundColor(): সেলের ব্যাকগ্রাউন্ড রঙ সেট করা হয়।
- setFillPattern(): ব্যাকগ্রাউন্ডে রঙের প্রক্রিয়া নির্ধারণ করা হয় (এখানে SOLID_FOREGROUND ব্যবহার করা হয়েছে)।
৪. Cell Border (বর্ডার ফরম্যাটিং)
Excel সেলগুলির চারপাশে বর্ডার অ্যাপ্লাই করার জন্য আপনি setBorderTop(), setBorderBottom(), setBorderLeft(), setBorderRight() ব্যবহার করতে পারেন।
উদাহরণ: সেলে বর্ডার অ্যাপ্লাই করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class CellBorderExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Cell Border");
// নতুন সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// বর্ডার সেট করা
style.setBorderTop(BorderStyle.THIN);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Cell with Border");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("cellWithBorder.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং বর্ডার অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- setBorderTop(), setBorderBottom(), setBorderLeft(), setBorderRight(): সেলের চারপাশে বর্ডার অ্যাপ্লাই করা হয়।
সারাংশ
Apache POI ব্যবহার করে Excel ফাইলের cell formatting এবং cell style কাস্টমাইজ করা অনেক সহজ। আপনি সেলের ফন্ট, অ্যালাইনমেন্ট, ব্যাকগ্রাউন্ড রঙ, নম্বর ফরম্যাটিং, এবং বর্ডার সেট করতে পারেন। এর মাধ্যমে আপনি Excel ফাইলের ডিজাইনকে আরও পেশাদার এবং কার্যকরী করতে পারেন। CellStyle ক্লাসটি আপনাকে এসব কাস্টমাইজেশনের সুবিধা প্রদান করে, যার মাধ্যমে Excel
ডকুমেন্টগুলির জন্য উচ্চমানের কাস্টম স্টাইল তৈরি করা সম্ভব হয়।
Apache POI ব্যবহার করে Excel সেলের জন্য কাস্টম ফরম্যাটিং তৈরি করা সম্ভব, যা আপনি CellStyle এবং DataFormat ক্লাসের মাধ্যমে করতে পারেন। এই দুটি ক্লাসই সেল স্টাইলিং এবং নম্বর/তারিখ ফরম্যাটিং কাস্টমাইজ করার জন্য ব্যবহৃত হয়।
এখানে আমরা দেখব কিভাবে আপনি CellStyle এবং DataFormat ব্যবহার করে Excel সেলে কাস্টম ফরম্যাটিং অ্যাপ্লাই করতে পারেন।
১. CellStyle এর মাধ্যমে সেল স্টাইল তৈরি করা
CellStyle ক্লাসটি সেলের বিভিন্ন ধরনের ফরম্যাটিং, যেমন ফন্ট, অ্যালাইনমেন্ট, ব্যাকগ্রাউন্ড রঙ, বর্ডার, ইত্যাদি কাস্টমাইজ করতে ব্যবহৃত হয়। আপনি setDataFormat() মেথড ব্যবহার করে সেল ফরম্যাট (যেমন নম্বর, তারিখ, শতাংশ) নির্ধারণ করতে পারেন।
উদাহরণ: CellStyle এর মাধ্যমে কাস্টম নম্বর ফরম্যাটিং
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class CustomCellStyleExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Custom Cell Style");
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// সেলের নম্বর ফরম্যাট তৈরি
DataFormat format = workbook.createDataFormat();
style.setDataFormat(format.getFormat("#,##0.00")); // হাজারের সেপারেটর সহ দশমিক ফরম্যাট
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং কাস্টম স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue(1234567.891);
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("customStyledWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং কাস্টম নম্বর ফরম্যাটিং অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- setDataFormat(): সেলটির নম্বর ফরম্যাট কাস্টমাইজ করে। এখানে
#,##0.00ফরম্যাটটি ব্যবহার করা হয়েছে, যা হাজারের সেপারেটর এবং দুটি দশমিক পয়েন্টের সাথে নম্বর প্রদর্শন করবে। - CellStyle: সেলের স্টাইল নির্ধারণ করা হয়েছে এবং স্টাইলের মাধ্যমে সেলের ভ্যালু প্রদর্শন করা হয়েছে।
২. CellStyle এবং DataFormat দিয়ে তারিখ ফরম্যাটিং
DataFormat ক্লাসটি তারিখের ফরম্যাটও নির্ধারণ করতে সাহায্য করে। তারিখের কাস্টম ফরম্যাটের জন্য আপনি setDataFormat() ব্যবহার করতে পারেন, এবং এর মাধ্যমে dd/mm/yyyy বা অন্য যেকোনো কাস্টম ফরম্যাটে তারিখ প্রদর্শন করা যায়।
উদাহরণ: তারিখের কাস্টম ফরম্যাটিং
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
public class DateFormattingExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Date Formatting");
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// তারিখের কাস্টম ফরম্যাট তৈরি
DataFormat format = workbook.createDataFormat();
style.setDataFormat(format.getFormat("dd/MM/yyyy")); // কাস্টম তারিখ ফরম্যাট
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং কাস্টম তারিখ স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue(new Date()); // বর্তমান তারিখ
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("dateFormattedWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং কাস্টম তারিখ ফরম্যাটিং অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- setDataFormat(): তারিখের জন্য কাস্টম ফরম্যাট নির্ধারণ করা হয়েছে। এখানে
"dd/MM/yyyy"ব্যবহার করা হয়েছে, যার মানে দিন/মাস/বছর ফরম্যাটে তারিখ প্রদর্শিত হবে। - new Date(): বর্তমান তারিখ সেট করা হয়েছে।
৩. CellStyle দিয়ে বিভিন্ন Alignment (অ্যালাইনমেন্ট) সেট করা
সেলটির ভিতরের টেক্সট বা ডেটা সঠিকভাবে দেখানোর জন্য আপনি HorizontalAlignment এবং VerticalAlignment ব্যবহার করে সেলের অ্যালাইনমেন্ট কাস্টমাইজ করতে পারেন।
উদাহরণ: সেলের অ্যালাইনমেন্ট কাস্টমাইজ করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class AlignmentExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Alignment Example");
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// হরাইজন্টাল এবং ভারটিক্যাল অ্যালাইনমেন্ট সেট করা
style.setAlignment(HorizontalAlignment.CENTER); // কেন্দ্রবিন্দু অ্যালাইনমেন্ট
style.setVerticalAlignment(VerticalAlignment.CENTER); // সেল verticle সেন্টারে
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং অ্যালাইনমেন্ট স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Centered Text");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("alignmentStyledWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং সেল অ্যালাইনমেন্ট অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- setAlignment(HorizontalAlignment.CENTER): সেলের টেক্সটকে অনুভূমিকভাবে কেন্দ্রবিন্দুতে রাখে।
- setVerticalAlignment(VerticalAlignment.CENTER): সেলের টেক্সটকে 수직ভাবে কেন্দ্রবিন্দুতে রাখে।
৪. CellStyle দিয়ে সেল বর্ডার ফরম্যাটিং
সেলের চারপাশে বর্ডার অ্যাপ্লাই করতে setBorderTop(), setBorderBottom(), setBorderLeft(), এবং setBorderRight() মেথডগুলি ব্যবহার করতে পারেন।
উদাহরণ: সেলে বর্ডার ফরম্যাটিং
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class BorderFormattingExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Border Formatting");
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// বর্ডার স্টাইল সেট করা
style.setBorderTop(BorderStyle.THIN);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং বর্ডার স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Cell with Border");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("borderStyledWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং সেল বর্ডার ফরম্যাটিং অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- setBorderTop(), setBorderBottom(), setBorderLeft(), setBorderRight(): সেলের চারপাশে thin বর্ডার অ্যাপ্লাই করা হয়েছে।
সারাংশ
Apache POI তে CellStyle এবং DataFormat ব্যবহার করে কাস্টম ফরম্যাটিং সহজেই করা যায়। আপনি সেল স্টাইলিং (ফন্ট, অ্যালাইনমেন্ট, বর্ডার) এবং ডেটা ফরম্যাটিং (নম্বর, তারিখ) কাস্টমাইজ করে আরও ভালো রিপোর্ট এবং স্পষ্ট ডেটা প্রদর্শন তৈরি করতে পারেন।
Apache POI ব্যবহার করে Excel সেলে Font এবং Color সেট করা খুবই সহজ। আপনি Font ক্লাস ব্যবহার করে সেলের ফন্ট কাস্টমাইজ করতে পারেন, এবং CellStyle ক্লাসের মাধ্যমে সেলের রঙ কাস্টমাইজ করতে পারেন।
এই উদাহরণে আমরা দেখব কিভাবে সেলে Font এবং Color সেট করা যায়।
১. Font সেট করা
Font ক্লাসের মাধ্যমে সেলের ফন্ট কাস্টমাইজ করা যায়, যেমন ফন্টের টাইপ, সাইজ, বোল্ড, ইটালিক ইত্যাদি।
উদাহরণ: Font সেট করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class FontExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Font Example");
// Font তৈরি
Font font = workbook.createFont();
font.setBold(true); // বোল্ড ফন্ট
font.setItalic(true); // ইটালিক ফন্ট
font.setFontHeightInPoints((short) 14); // ফন্ট সাইজ সেট করা
font.setFontName("Arial"); // ফন্ট নাম সেট করা
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
style.setFont(font); // Font স্টাইল অ্যাপ্লাই করা
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং ফন্ট স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Bold and Italic Font");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("fontStyledWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং কাস্টম ফন্ট স্টাইল অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- createFont(): ফন্ট তৈরি করা হয়েছে।
- setBold(true) এবং setItalic(true): বোল্ড এবং ইটালিক স্টাইল ব্যবহার করা হয়েছে।
- setFontHeightInPoints(): ফন্ট সাইজ নির্ধারণ করা হয়েছে (এখানে ১৪ পয়েন্ট)।
- setFontName(): ফন্টের নাম অ্যারিয়াল (Arial) সেট করা হয়েছে।
- CellStyle: তৈরি করা ফন্ট স্টাইল সেলে অ্যাপ্লাই করা হয়েছে।
২. Color (রঙ) সেট করা
Apache POI ব্যবহার করে সেলের ব্যাকগ্রাউন্ড বা টেক্সট রঙ কাস্টমাইজ করা যায়। আপনি setFillForegroundColor() এবং setFillPattern() মেথড ব্যবহার করে সেলের ব্যাকগ্রাউন্ড রঙ, এবং setColor() মেথড ব্যবহার করে ফন্টের রঙ নির্ধারণ করতে পারেন।
উদাহরণ: Color সেট করা (ব্যাকগ্রাউন্ড এবং ফন্ট রঙ)
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.FileOutputStream;
import java.io.IOException;
public class ColorExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Color Example");
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// ব্যাকগ্রাউন্ড রঙ সেট করা
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); // হলুদ ব্যাকগ্রাউন্ড
style.setFillPattern(FillPatternType.SOLID_FOREGROUND); // সলিড ব্যাকগ্রাউন্ড
// Font তৈরি এবং রঙ সেট করা
Font font = workbook.createFont();
font.setColor(IndexedColors.RED.getIndex()); // ফন্টের রঙ লাল
// Font স্টাইল সেলে অ্যাপ্লাই করা
style.setFont(font);
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Yellow Background, Red Font");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("colorStyledWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং কাস্টম রঙ অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- setFillForegroundColor(): সেলের ব্যাকগ্রাউন্ড রঙ হিসেবে হলুদ সেট করা হয়েছে।
- setFillPattern(): ব্যাকগ্রাউন্ডের ফিল প্যাটার্ন সলিড করা হয়েছে।
- font.setColor(): ফন্টের রঙ লাল (RED) সেট করা হয়েছে।
- IndexedColors: POI এর প্রি-ডিফাইনড রঙ তালিকা থেকে রঙ নির্ধারণ করা হয়।
IndexedColors.YELLOWএবংIndexedColors.REDব্যবহার করা হয়েছে এখানে।
৩. Font এবং Color একত্রে ব্যবহার
ফন্ট এবং রঙ একত্রে ব্যবহার করে একটি সেলে স্টাইল এবং রঙিং করতে পারেন।
উদাহরণ: ফন্ট এবং রঙ একত্রে অ্যাপ্লাই করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class FontAndColorExample {
public static void main(String[] args) throws IOException {
// XSSFWorkbook অবজেক্ট তৈরি
XSSFWorkbook workbook = new XSSFWorkbook();
// নতুন শীট তৈরি
Sheet sheet = workbook.createSheet("Font and Color Example");
// সেল স্টাইল তৈরি
CellStyle style = workbook.createCellStyle();
// ব্যাকগ্রাউন্ড রঙ সেট করা
style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// Font তৈরি এবং রঙ সেট করা
Font font = workbook.createFont();
font.setColor(IndexedColors.WHITE.getIndex()); // ফন্ট রঙ সাদা
font.setBold(true); // ফন্ট বোল্ড করা
style.setFont(font);
// রো তৈরি
Row row = sheet.createRow(0);
// সেল তৈরি এবং স্টাইল অ্যাপ্লাই করা
Cell cell = row.createCell(0);
cell.setCellValue("Green Background, White Bold Font");
cell.setCellStyle(style);
// ফাইল আউটপুট স্ট্রিম তৈরি
FileOutputStream fileOut = new FileOutputStream("fontAndColorStyledWorkbook.xlsx");
// এক্সেল ফাইল সেভ করা
workbook.write(fileOut);
fileOut.close();
System.out.println("Excel ফাইল তৈরি হয়েছে এবং কাস্টম ফন্ট এবং রঙ অ্যাপ্লাই করা হয়েছে!");
}
}
কোড ব্যাখ্যা:
- সেলের ব্যাকগ্রাউন্ডে সবুজ (Green) রঙ এবং ফন্টে সাদা (White) রঙ বোল্ড ফন্টের সাথে অ্যাপ্লাই করা হয়েছে।
- setFont() মেথড ব্যবহার করে ফন্টের বৈশিষ্ট্য এবং setFillForegroundColor() দিয়ে ব্যাকগ্রাউন্ড রঙ নির্ধারণ করা হয়েছে।
সারাংশ
Apache POI ব্যবহার করে সেল স্টাইলিং এর মাধ্যমে আপনি Font এবং Color কাস্টমাইজ করতে পারেন। ফন্টের স্টাইল, সাইজ, রঙ এবং ব্যাকগ্রাউন্ড রঙ পরিবর্তন করে আরও আকর্ষণীয় এবং সুসজ্জিত Excel রিপোর্ট তৈরি করতে পারবেন। IndexedColors ব্যবহার করে POI এর ডিফল্ট রঙ তালিকা থেকে রঙ নির্বাচন করা যায়, এবং setFont() এবং setFillForegroundColor() এর মাধ্যমে সেল স্টাইল নিয়ন্ত্রণ করা যায়।
Apache POI এর সাহায্যে Excel ফাইল তৈরি বা সম্পাদনা করার সময়, সেলগুলোর border (সীমানা) এবং alignment (অ্যালাইনমেন্ট) নিয়ন্ত্রণ করা খুবই গুরুত্বপূর্ণ। এটি ডেটাকে সুন্দরভাবে প্রদর্শন করতে এবং পাঠযোগ্যতা উন্নত করতে সহায়ক। নিচে আমরা Apache POI ব্যবহার করে কিভাবে border এবং alignment সেট করা যায়, তা নিয়ে আলোচনা করব।
১. Border (সীমানা) সেট করা
Excel সেলের চারপাশে সীমানা (borders) যোগ করার জন্য CellStyle ব্যবহার করা হয়। POI সেলগুলোর চারপাশে বিভিন্ন ধরনের সীমানা যোগ করতে বিভিন্ন BorderStyle ব্যবহার করতে সহায়ক।
BorderStyle Enum:
Apache POI একটি BorderStyle enum প্রদান করে, যার মাধ্যমে আপনি সেলগুলোর সীমানার ধরন নির্ধারণ করতে পারেন। কিছু প্রচলিত সীমানা ধরন হল:
- BorderStyle.THIN: সিম্পল সীমানা
- BorderStyle.MEDIUM: মাঝারি সীমানা
- BorderStyle.DASHED: ড্যাশড সীমানা
- BorderStyle.DOUBLE: ডাবল সীমানা
- BorderStyle.NONE: কোন সীমানা না দেওয়া
উদাহরণ: Border সেট করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class BorderExample {
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook(); // Create new workbook
Sheet sheet = workbook.createSheet("Sheet 1"); // Create sheet
// Create a cell style and set borders
CellStyle style = workbook.createCellStyle();
style.setBorderTop(BorderStyle.THIN);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
// Create a row and cell, then apply the style
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Hello World");
cell.setCellStyle(style);
// Write to an Excel file
try (FileOutputStream fileOut = new FileOutputStream("border_example.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
}
}
এখানে, সেলটির চারপাশে THIN টাইপের সীমানা প্রয়োগ করা হয়েছে।
২. Alignment (অ্যালাইনমেন্ট) সেট করা
Excel সেলের text alignment বা অ্যালাইনমেন্ট সেট করতে CellStyle এর setAlignment() এবং setVerticalAlignment() মেথড ব্যবহার করা হয়। এখানে আপনি horizontal এবং vertical alignment নির্ধারণ করতে পারেন।
Alignment Enum:
- Horizontal Alignment:
- ALIGN_LEFT: বাম দিকে অ্যালাইন
- ALIGN_CENTER: কেন্দ্রে অ্যালাইন
- ALIGN_RIGHT: ডান দিকে অ্যালাইন
- ALIGN_JUSTIFY: পুরো সেল জুড়ে টেক্সট প্রসারিত
- Vertical Alignment:
- VERTICAL_TOP: উপরের দিকে অ্যালাইন
- VERTICAL_CENTER: সেন্টারে অ্যালাইন
- VERTICAL_BOTTOM: নিচে অ্যালাইন
উদাহরণ: Alignment সেট করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class AlignmentExample {
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook(); // Create new workbook
Sheet sheet = workbook.createSheet("Sheet 1"); // Create sheet
// Create a cell style and set alignment
CellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER); // Horizontal center
style.setVerticalAlignment(VerticalAlignment.CENTER); // Vertical center
// Create a row and cell, then apply the style
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Centered Text");
cell.setCellStyle(style);
// Write to an Excel file
try (FileOutputStream fileOut = new FileOutputStream("alignment_example.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
}
}
এখানে, সেলটিতে Center alignment (both horizontal and vertical) প্রয়োগ করা হয়েছে।
৩. Border এবং Alignment একসাথে ব্যবহার করা
একই সেলে border এবং alignment একসাথে ব্যবহার করার জন্য, প্রথমে সেল স্টাইল তৈরি করুন এবং তারপর উভয় বৈশিষ্ট্য (border এবং alignment) সেট করুন।
উদাহরণ: Border এবং Alignment একসাথে সেট করা
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class BorderAndAlignmentExample {
public static void main(String[] args) throws IOException {
Workbook workbook = new XSSFWorkbook(); // Create new workbook
Sheet sheet = workbook.createSheet("Sheet 1"); // Create sheet
// Create a cell style
CellStyle style = workbook.createCellStyle();
// Set borders
style.setBorderTop(BorderStyle.THIN);
style.setBorderBottom(BorderStyle.THIN);
style.setBorderLeft(BorderStyle.THIN);
style.setBorderRight(BorderStyle.THIN);
// Set alignment
style.setAlignment(HorizontalAlignment.CENTER); // Horizontal center
style.setVerticalAlignment(VerticalAlignment.CENTER); // Vertical center
// Create a row and cell, then apply the style
Row row = sheet.createRow(0);
Cell cell = row.createCell(0);
cell.setCellValue("Border and Alignment");
cell.setCellStyle(style);
// Write to an Excel file
try (FileOutputStream fileOut = new FileOutputStream("border_and_alignment_example.xlsx")) {
workbook.write(fileOut);
}
workbook.close();
}
}
এখানে, সেলটির চারপাশে thin borders এবং center alignment (both horizontal and vertical) প্রয়োগ করা হয়েছে।
সারাংশ
- Border এবং Alignment সেলগুলোর টেক্সট প্রদর্শনের সৌন্দর্য এবং পাঠযোগ্যতা বাড়াতে সহায়ক।
- Border সেট করতে BorderStyle ব্যবহার করা হয়, যেখানে আপনি বিভিন্ন টাইপের সীমানা নির্ধারণ করতে পারেন (যেমন, THIN, MEDIUM, DASHED ইত্যাদি)।
- Alignment সেট করতে setAlignment() এবং setVerticalAlignment() মেথড ব্যবহার করা হয়, যেখানে আপনি সেলের horizontal এবং vertical অ্যালাইনমেন্ট কনফিগার করতে পারেন।
Apache POI লাইব্রেরি ব্যবহার করে আপনি খুব সহজেই Excel সেলগুলোর সীমানা এবং অ্যালাইনমেন্ট কাস্টমাইজ করতে পারেন, যা ডেটাকে আরও প্রফেশনাল এবং সুন্দরভাবে উপস্থাপন করতে সাহায্য করে।
Conditional Formatting হলো Excel ফাইলে এমন একটি বৈশিষ্ট্য, যার মাধ্যমে আপনি নির্দিষ্ট শর্তের উপর ভিত্তি করে cell গুলোর রঙ, ফন্ট, বা অন্যান্য ফরম্যাট পরিবর্তন করতে পারেন। Apache POI ব্যবহার করে, আপনি প্রোগ্রাম্যাটিকভাবে Excel ফাইলে conditional formatting যোগ করতে পারেন।
Conditional Formatting এর প্রয়োগ
Apache POI তে conditional formatting যোগ করতে হলে আপনাকে কয়েকটি ধাপ অনুসরণ করতে হবে। এখানে মূলত ConditionalFormattingRule তৈরি করতে হয়, যা নির্দিষ্ট criteria এর উপর ভিত্তি করে cell style পরিবর্তন করবে।
1. Conditional Formatting Rule তৈরি করা
প্রথমে, Excel সেলে একটি শর্ত তৈরি করতে হবে, যা নির্দিষ্ট ডেটার উপর ভিত্তি করে ফরম্যাট পরিবর্তন করবে। এখানে একটি উদাহরণ দেওয়া হল, যেখানে cell গুলোর মান 50 এর বেশি হলে সেটি সবুজ রঙে থাকবে এবং 50 এর কম হলে লাল রঙে থাকবে।
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.util.AreaReference;
import org.apache.poi.ss.util.CellReference;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelConditionalFormatting {
public static void main(String[] args) throws IOException {
// নতুন একটি Workbook তৈরি করা
Workbook workbook = new XSSFWorkbook();
// Workbook-এ নতুন Sheet যোগ করা
Sheet sheet = workbook.createSheet("Sheet1");
// কিছু ডেটা ইনসার্ট করা (1st column - values)
for (int i = 0; i < 10; i++) {
Row row = sheet.createRow(i);
row.createCell(0).setCellValue(i * 10); // 0, 10, 20, ..., 90
}
// Conditional Formatting যোগ করা
// Conditional formatting rule তৈরি করা
SheetConditionalFormatting sheetCF = sheet.getSheetConditionalFormatting();
// একটি নতুন Rule তৈরি করা, যেখানে 50 এর বেশি হলে সবুজ এবং কম হলে লাল হবে
ConditionalFormattingRule rule = sheetCF.createConditionalFormattingRule(ComparisonOperator.GT, "50");
// শর্তের জন্য সেল স্টাইল তৈরি করা
Font font = workbook.createFont();
font.setColor(IndexedColors.RED.getIndex());
CellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFont(font);
// Rule এর স্টাইল সেট করা
rule.setCellStyle(cellStyle);
// শর্তটি নির্ধারণ করা
CellRangeAddress[] regions = {CellRangeAddress.valueOf("A1:A10")}; // Range: A1 থেকে A10
// Conditional formatting শর্ত প্রয়োগ করা
sheetCF.addConditionalFormatting(regions, rule);
// Excel ফাইল সংরক্ষণ করা
try (FileOutputStream fileOut = new FileOutputStream("conditional_formatting_example.xlsx")) {
workbook.write(fileOut);
}
// Workbook বন্ধ করা
workbook.close();
}
}
এখানে, আমরা প্রথমে একটি নতুন Excel ফাইল তৈরি করেছি এবং তার মধ্যে কিছু ডেটা (0, 10, 20, ... 90) ইনপুট করেছি। তারপরে, conditional formatting শর্ত হিসেবে 50 এর বেশি হলে রঙ সবুজ এবং 50 এর কম হলে লাল রঙের স্টাইল প্রয়োগ করা হয়েছে।
2. Conditional Formatting Rule এর ধরন
Apache POI তে বেশ কিছু ধরণের conditional formatting rules ব্যবহার করা যেতে পারে:
- Comparison Operators:
GT(Greater Than),LT(Less Than),EQ(Equal),GE(Greater Than or Equal),LE(Less Than or Equal),NE(Not Equal) - Formula-based rules: নির্দিষ্ট ফর্মুলার মাধ্যমে শর্ত তৈরি করা
- Color Scales: সেল মানের ভিত্তিতে গ্রেডিয়েন্ট কালার স্কেল তৈরি করা
- Data Bars: ডেটা গুলি সেল গুলোর ভিতরে বার চিত্র হিসেবে প্রদর্শন করা
- Icon Sets: মানের ভিত্তিতে বিভিন্ন আইকন ব্যবহার করা (যেমন, সবুজ, হলুদ, লাল ত্রিভুজ বা রঙিন বল)
উদাহরণ: মানের ভিত্তিতে তিনটি রঙের শর্ত ব্যবহার করা
// ComparisonRule তৈরি করা (যেখানে মানের উপর ভিত্তি করে সেল রঙ পরিবর্তন হবে)
ConditionalFormattingRule rule1 = sheetCF.createConditionalFormattingRule(ComparisonOperator.LT, "30");
ConditionalFormattingRule rule2 = sheetCF.createConditionalFormattingRule(ComparisonOperator.BETWEEN, "30", "70");
ConditionalFormattingRule rule3 = sheetCF.createConditionalFormattingRule(ComparisonOperator.GT, "70");
// শর্তের জন্য সেল স্টাইল তৈরি করা
CellStyle style1 = workbook.createCellStyle();
style1.setFillForegroundColor(IndexedColors.RED.getIndex());
style1.setFillPattern(FillPatternType.SOLID_FOREGROUND);
CellStyle style2 = workbook.createCellStyle();
style2.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style2.setFillPattern(FillPatternType.SOLID_FOREGROUND);
CellStyle style3 = workbook.createCellStyle();
style3.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style3.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// শর্তগুলি নির্ধারণ করা
rule1.setCellStyle(style1);
rule2.setCellStyle(style2);
rule3.setCellStyle(style3);
// শর্তটি নির্ধারণ করা
CellRangeAddress[] regions = {CellRangeAddress.valueOf("A1:A10")}; // Range: A1 থেকে A10
// Conditional formatting শর্ত প্রয়োগ করা
sheetCF.addConditionalFormatting(regions, rule1, rule2, rule3);
এখানে, cell গুলোর জন্য তিনটি শর্ত দেওয়া হয়েছে:
- 30 এর কম হলে লাল রঙ
- 30 থেকে 70 এর মধ্যে হলে হলুদ রঙ
- 70 এর বেশি হলে সবুজ রঙ
3. Formula ভিত্তিক Conditional Formatting
কিছু ক্ষেত্রে, আপনি Formula ব্যবহার করে conditional formatting করতে পারেন। যেমন, একটি সেল যদি অন্য সেলের মানের চেয়ে বড় হয়, তাহলে তা একটি নির্দিষ্ট রঙে প্রদর্শিত হবে।
// Formula ভিত্তিক শর্ত তৈরি করা
ConditionalFormattingRule rule = sheetCF.createConditionalFormattingRule("=A1>50");
// শর্তের জন্য স্টাইল তৈরি করা
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// স্টাইল সেট করা
rule.setCellStyle(style);
// শর্তটি নির্ধারণ করা
CellRangeAddress[] regions = {CellRangeAddress.valueOf("A1:A10")}; // Range: A1 থেকে A10
// Conditional formatting শর্ত প্রয়োগ করা
sheetCF.addConditionalFormatting(regions, rule);
এখানে, যদি A1 সেলের মান 50 এর বেশি হয়, তবে তার রঙ হলুদ হয়ে যাবে।
সারাংশ
Apache POI ব্যবহার করে আপনি সহজেই Excel ফাইলের মধ্যে conditional formatting যোগ করতে পারেন। এটি বিভিন্ন ধরনের শর্ত এবং স্টাইল ব্যবহার করে ডেটার ভিজ্যুয়াল প্রেজেন্টেশন উন্নত করতে সাহায্য করে। আপনি comparison operators, formulas, color scales, data bars, এবং icon sets ব্যবহার করে সেলগুলোর রঙ বা ফরম্যাট পরিবর্তন করতে পারেন, যা ডেটা বিশ্লেষণ এবং রিপোর্টিং প্রক্রিয়া অনেক সহজ করে তোলে।
Read more