টেবিলের Data Binding এবং Dynamic Table Creation

Java Technologies - অ্যাপাচি পিওআই (ওয়ার্ড) টেবিল ব্যবস্থাপনা |
130
130

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!");
    }
}

কোড ব্যাখ্যা:

  • XWPFTable: টেবিল তৈরি করার জন্য ব্যবহৃত ক্লাস।
  • XWPFTableRow: টেবিলের প্রতিটি রো তৈরি করার জন্য ব্যবহৃত ক্লাস।
  • XWPFTableCell: টেবিলের প্রতিটি সেল তৈরি এবং সেট করার জন্য ব্যবহৃত ক্লাস।
  • data: একটি List<String[]> যা ডাইনামিক ডেটা ধারণ করে। এখানে ID, Name, এবং Age ফিল্ড সহ কিছু ডেটা রয়েছে।
  • table.createRow(): প্রতিটি ডেটা লাইন জন্য একটি নতুন রো তৈরি করা হয় এবং সেলের মধ্যে ডেটা সেট করা হয়।

২. ডাইনামিক টেবিলের জন্য ফিল্ড নাম এবং রো সংখ্যা কাস্টমাইজেশন

যদি আপনি ডাইনামিকভাবে ফিল্ড এবং রো সংখ্যা নির্ধারণ করতে চান, তবে আপনি আরও কাস্টমাইজেশন করতে পারবেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে টেবিলের হেডার এবং রো সংখ্যা উভয়ই ডাইনামিকভাবে কনফিগার করা হয়েছে।

উদাহরণ: কাস্টম হেডার এবং রো সংখ্যা সহ ডাইনামিক টেবিল

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!");
    }
}

কোড ব্যাখ্যা:

  • String[] headers: এই অ্যারে দিয়ে টেবিলের হেডার ডাইনামিকভাবে তৈরি করা হয়েছে।
  • List<String[]> data: ডাইনামিক ডেটা যোগ করা হয়েছে, যেখানে প্রতিটি রো এর জন্য তথ্য অন্তর্ভুক্ত রয়েছে।
  • table.createRow(): প্রতিটি ডেটার জন্য একটি নতুন রো তৈরি করা হয়েছে এবং সেলগুলিতে ডেটা যোগ করা হয়েছে।

৩. শৈলীর কাস্টমাইজেশন (Table Style)

টেবিলের শৈলী কাস্টমাইজ করার জন্য 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!");
    }
}

কোড ব্যাখ্যা:

  • table.setTableWidth(5000): টেবিলের প্রস্থ নির্ধারণ করা।
  • **cell.setColor("A5A5

A5")**: হেডার সেলের ব্যাকগ্রাউন্ড কালার পরিবর্তন করা।


সারাংশ

Apache POI ব্যবহার করে Microsoft Word (DOCX) ডকুমেন্টে ডাইনামিক টেবিল তৈরি এবং ডেটা বাইন্ডিং করা সম্ভব। আপনি টেবিলের হেডার এবং রো ডাইনামিকভাবে তৈরি করতে পারেন এবং ডেটা বাইন্ডিং করে টেবিলের মধ্যে ডেটা যোগ করতে পারেন। এছাড়া, টেবিলের শৈলী কাস্টমাইজ করে ফন্ট কালার, ব্যাকগ্রাউন্ড কালার, এবং টেবিলের প্রস্থ নিয়ন্ত্রণ করা সম্ভব।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion