Apache POI ব্যবহার করে Microsoft Word (DOCX) ডকুমেন্টে ডাইনামিক টেবিল তৈরি এবং ডেটা বাইন্ডিং করার প্রক্রিয়া খুবই সহজ। আপনি যদি ডাইনামিক ডেটা (যেমন ডেটাবেস বা অন্য কোনো সোর্স থেকে আসা ডেটা) ব্যবহার করে টেবিল তৈরি করতে চান, তবে এটি কিছু কাস্টম লজিকের মাধ্যমে সম্ভব।
এখানে দেখানো হবে কিভাবে ডাইনামিক টেবিল তৈরি করা যায় এবং কিভাবে ডেটাকে টেবিলের মধ্যে বাইন্ড করা যায়।
প্রথমে একটি সাধারণ টেবিল তৈরি করা হবে এবং পরে ডাইনামিক ডেটা যোগ করা হবে।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DynamicTableExample {
public static void main(String[] args) throws IOException {
// একটি নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// টেবিল তৈরি করা
XWPFTable table = document.createTable();
// টেবিলের প্রথম রো (হেডার রো) তৈরি করা
XWPFTableRow headerRow = table.getRow(0);
XWPFTableCell cell1 = headerRow.getCell(0);
cell1.setText("ID");
XWPFTableCell cell2 = headerRow.createCell();
cell2.setText("Name");
XWPFTableCell cell3 = headerRow.createCell();
cell3.setText("Age");
// ডাইনামিক ডেটা (List of data)
List<String[]> data = new ArrayList<>();
data.add(new String[]{"1", "John Doe", "28"});
data.add(new String[]{"2", "Jane Smith", "35"});
data.add(new String[]{"3", "Mike Johnson", "45"});
// ডেটা টেবিলের মধ্যে বাইন্ড করা
for (String[] rowData : data) {
XWPFTableRow row = table.createRow(); // নতুন রো তৈরি
row.getCell(0).setText(rowData[0]); // ID
row.getCell(1).setText(rowData[1]); // Name
row.getCell(2).setText(rowData[2]); // Age
}
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("DynamicTableInWord.docx")) {
document.write(out);
}
System.out.println("Word document with dynamic table created successfully!");
}
}
যদি আপনি ডাইনামিকভাবে ফিল্ড এবং রো সংখ্যা নির্ধারণ করতে চান, তবে আপনি আরও কাস্টমাইজেশন করতে পারবেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে টেবিলের হেডার এবং রো সংখ্যা উভয়ই ডাইনামিকভাবে কনফিগার করা হয়েছে।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class CustomDynamicTableExample {
public static void main(String[] args) throws IOException {
// একটি নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// টেবিল তৈরি করা
XWPFTable table = document.createTable();
// ডাইনামিক হেডার তৈরি
String[] headers = {"ID", "Name", "Position", "Salary"};
XWPFTableRow headerRow = table.getRow(0);
for (String header : headers) {
XWPFTableCell cell = headerRow.createCell();
cell.setText(header);
}
// ডাইনামিক ডেটা
List<String[]> data = List.of(
new String[]{"1", "Alice", "Manager", "$5000"},
new String[]{"2", "Bob", "Developer", "$4000"},
new String[]{"3", "Charlie", "Designer", "$3500"}
);
// ডেটা টেবিলের মধ্যে বাইন্ড করা
for (String[] rowData : data) {
XWPFTableRow row = table.createRow(); // নতুন রো তৈরি
for (String cellData : rowData) {
row.createCell().setText(cellData);
}
}
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("CustomDynamicTable.docx")) {
document.write(out);
}
System.out.println("Word document with custom dynamic table created successfully!");
}
}
টেবিলের শৈলী কাস্টমাইজ করার জন্য XWPFTable ক্লাসের মধ্যে বিভিন্ন শৈলী প্রয়োগ করা যেতে পারে, যেমন টেবিলের বর্ডার, সেল প্যাডিং, এবং টেক্সট ফরম্যাটিং।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import java.io.FileOutputStream;
import java.io.IOException;
public class StyledDynamicTableExample {
public static void main(String[] args) throws IOException {
// একটি নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// টেবিল তৈরি করা
XWPFTable table = document.createTable();
// টেবিলের শৈলী কাস্টমাইজেশন
table.setTableWidth(5000); // টেবিলের প্রস্থ সেট করা
table.setWidth("100%"); // টেবিলের সম্পূর্ণ প্রস্থ সেট করা
// হেডার রো তৈরি করা
XWPFTableRow headerRow = table.getRow(0);
String[] headers = {"ID", "Name", "Department"};
for (String header : headers) {
XWPFTableCell cell = headerRow.createCell();
cell.setText(header);
cell.setColor("A5A5A5"); // হেডার সেলের কালার সেট করা
}
// ডাইনামিক ডেটা যোগ করা
String[][] data = {{"1", "John", "HR"}, {"2", "Emma", "IT"}};
for (String[] rowData : data) {
XWPFTableRow row = table.createRow();
for (String cellData : rowData) {
XWPFTableCell cell = row.createCell();
cell.setText(cellData);
}
}
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("StyledDynamicTable.docx")) {
document.write(out);
}
System.out.println("Word document with styled dynamic table created successfully!");
}
}
A5")**: হেডার সেলের ব্যাকগ্রাউন্ড কালার পরিবর্তন করা।
Apache POI ব্যবহার করে Microsoft Word (DOCX) ডকুমেন্টে ডাইনামিক টেবিল তৈরি এবং ডেটা বাইন্ডিং করা সম্ভব। আপনি টেবিলের হেডার এবং রো ডাইনামিকভাবে তৈরি করতে পারেন এবং ডেটা বাইন্ডিং করে টেবিলের মধ্যে ডেটা যোগ করতে পারেন। এছাড়া, টেবিলের শৈলী কাস্টমাইজ করে ফন্ট কালার, ব্যাকগ্রাউন্ড কালার, এবং টেবিলের প্রস্থ নিয়ন্ত্রণ করা সম্ভব।
common.read_more