common.skill

টেবিল ব্যবস্থাপনা

Java Technologies - অ্যাপাচি পিওআই (ওয়ার্ড)
156
156

Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টে টেবিল তৈরি এবং সম্পাদনা করা সম্ভব। আপনি XWPFTable এবং তার উপাদানগুলি ব্যবহার করে Word ডকুমেন্টে টেবিল তৈরি, সেল যোগ, সেল মর্জ, সেল ফরম্যাটিং ইত্যাদি করতে পারেন। এই টিউটোরিয়ালে আমরা Word ডকুমেন্টে টেবিল ব্যবস্থাপনার বিভিন্ন দিক দেখব।


Word ডকুমেন্টে টেবিল তৈরি করা

Word ডকুমেন্টে টেবিল তৈরি করতে হলে আপনাকে XWPFTable ক্লাস ব্যবহার করতে হবে। একটি টেবিল সাধারণত XWPFTableRow (টেবিলের সারি) এবং XWPFTableCell (টেবিলের সেল) দ্বারা গঠিত।

টেবিল তৈরি এবং সেল যোগ করার উদাহরণ:

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class TableExample {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি করা
            XWPFDocument document = new XWPFDocument();

            // টেবিল তৈরি করা (2 সারি এবং 3 কলাম)
            XWPFTable table = document.createTable(2, 3);

            // প্রথম সারির প্রথম সেল সেট করা
            XWPFTableRow row1 = table.getRow(0);
            XWPFTableCell cell1 = row1.getCell(0);
            cell1.setText("Cell 1");

            // প্রথম সারির দ্বিতীয় সেল সেট করা
            XWPFTableCell cell2 = row1.getCell(1);
            cell2.setText("Cell 2");

            // প্রথম সারির তৃতীয় সেল সেট করা
            XWPFTableCell cell3 = row1.getCell(2);
            cell3.setText("Cell 3");

            // দ্বিতীয় সারির প্রথম সেল সেট করা
            XWPFTableRow row2 = table.getRow(1);
            XWPFTableCell cell4 = row2.getCell(0);
            cell4.setText("Cell 4");

            // দ্বিতীয় সারির দ্বিতীয় সেল সেট করা
            XWPFTableCell cell5 = row2.getCell(1);
            cell5.setText("Cell 5");

            // দ্বিতীয় সারির তৃতীয় সেল সেট করা
            XWPFTableCell cell6 = row2.getCell(2);
            cell6.setText("Cell 6");

            // Word ডকুমেন্ট সেভ করা
            FileOutputStream out = new FileOutputStream("table_example.docx");
            document.write(out);
            out.close();

            System.out.println("Word document created with table.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • createTable(2, 3): এটি একটি টেবিল তৈরি করে যেখানে ২টি সারি এবং ৩টি কলাম থাকবে।
  • getRow(index): একটি নির্দিষ্ট সারি পাওয়ার জন্য ব্যবহার করা হয়।
  • getCell(index): একটি নির্দিষ্ট সেল পাওয়ার জন্য ব্যবহার করা হয়।
  • setText("text"): একটি সেলে টেক্সট সেট করার জন্য ব্যবহার করা হয়।

টেবিলের সেলগুলোর মধ্যে ফরম্যাটিং (Bold, Italic)

টেবিলের সেলগুলোতে Run যোগ করে টেক্সটের ফরম্যাটিং করা যায়। আপনি XWPFRun ব্যবহার করে সেলের টেক্সটকে বোল্ড, ইটালিক বা আন্ডারলাইন করতে পারেন।

উদাহরণ: টেবিলের সেলগুলিতে ফরম্যাটিং করা

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class TableFormattingExample {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি করা
            XWPFDocument document = new XWPFDocument();

            // টেবিল তৈরি করা (2 সারি এবং 3 কলাম)
            XWPFTable table = document.createTable(2, 3);

            // প্রথম সারির প্রথম সেল সেট করা
            XWPFTableRow row1 = table.getRow(0);
            XWPFTableCell cell1 = row1.getCell(0);
            XWPFRun run1 = cell1.addParagraph().createRun();
            run1.setText("Bold Text");
            run1.setBold(true);

            // প্রথম সারির দ্বিতীয় সেল সেট করা
            XWPFTableCell cell2 = row1.getCell(1);
            XWPFRun run2 = cell2.addParagraph().createRun();
            run2.setText("Italic Text");
            run2.setItalic(true);

            // প্রথম সারির তৃতীয় সেল সেট করা
            XWPFTableCell cell3 = row1.getCell(2);
            XWPFRun run3 = cell3.addParagraph().createRun();
            run3.setText("Underlined Text");
            run3.setUnderline(UnderlinePatterns.SINGLE);

            // Word ডকুমেন্ট সেভ করা
            FileOutputStream out = new FileOutputStream("table_with_formatting.docx");
            document.write(out);
            out.close();

            System.out.println("Word document created with formatted table.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • addParagraph().createRun(): এটি সেলে একটি নতুন প্যারাগ্রাফ এবং রান তৈরি করে, যা টেক্সট ফরম্যাটিং পরিচালনা করতে সহায়তা করে।
  • setBold(true): এটি টেক্সটকে বোল্ড করে।
  • setItalic(true): এটি টেক্সটকে ইটালিক করে।
  • setUnderline(UnderlinePatterns.SINGLE): এটি টেক্সটকে আন্ডারলাইন করে।

টেবিলের সেল মার্জ করা

Apache POI ব্যবহার করে আপনি টেবিলের সেল মার্জ করতে পারেন। অর্থাৎ, আপনি একাধিক সেলকে একত্রিত (merge) করতে পারবেন।

উদাহরণ: সেল মার্জ করা

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class TableMergeCellsExample {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি করা
            XWPFDocument document = new XWPFDocument();

            // টেবিল তৈরি করা (2 সারি এবং 3 কলাম)
            XWPFTable table = document.createTable(2, 3);

            // প্রথম সারির প্রথম সেল মার্জ করা
            XWPFTableRow row1 = table.getRow(0);
            row1.getCell(0).setText("Merged Cell");
            row1.getCell(0).getCTTc().addNewVMerge().setVal(STMerge.RESTART);
            row1.getCell(1).getCTTc().addNewVMerge().setVal(STMerge.CONTINUE);

            // দ্বিতীয় সারির প্রথম সেল মার্জ করা
            XWPFTableRow row2 = table.getRow(1);
            row2.getCell(1).setText("Merged with above");

            // Word ডকুমেন্ট সেভ করা
            FileOutputStream out = new FileOutputStream("merged_cells_table.docx");
            document.write(out);
            out.close();

            System.out.println("Word document created with merged table cells.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ব্যাখ্যা:

  • setText(): এটি সেলে টেক্সট সেট করে।
  • addNewVMerge(): এটি সেল মার্জ করতে ব্যবহৃত হয়।
  • STMerge.RESTART এবং STMerge.CONTINUE: এই দুটি ব্যবহার করে আপনি সেল মার্জের প্রক্রিয়া সম্পাদন করতে পারেন, যেখানে RESTART নতুন সেল থেকে মার্জ শুরু করে এবং CONTINUE পূর্বের সেল মার্জ করে।

টেবিলের কলাম ও সারি সাইজ কাস্টমাইজ করা

আপনি চাইলে টেবিলের সেলগুলির আকার কাস্টমাইজ করতে পারেন, যেমন সেল ব্যাটন, কলামের প্রস্থ ইত্যাদি।

উদাহরণ: টেবিলের কলাম সাইজ কাস্টমাইজ করা

import org.apache.poi.xwpf.usermodel.*;
import org.apache.xmlbeans.XmlCursor;

import java.io.FileOutputStream;
import java.io.IOException;

public class TableCellSizeExample {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি করা
            XWPFDocument document = new XWPFDocument();

            // টেবিল তৈরি করা (2 সারি এবং 3 কলাম)
            XWPFTable table = document.createTable(2, 3);

            // প্রথম সারির প্রথম সেলের আকার কাস্টমাইজ করা
            XWPFTableRow row1 = table.getRow(0);
            XWPFTableCell cell1 = row1.getCell(0);
            XmlCursor cursor = cell1.getCTR().newCursor();
            cursor.setCursorPosition(cursor.getSelectionStart());
            cursor.toNextToken();
            cursor.insertElement("

w:vMerge");

        // সেল প্রস্থ পরিবর্তন করা
        table.getCTTbl().getTblGrid().addNewGridCol().setW(5000); // কলাম প্রস্থ সেট করা

        // Word ডকুমেন্ট সেভ করা
        FileOutputStream out = new FileOutputStream("table_with_custom_cell_size.docx");
        document.write(out);
        out.close();

        System.out.println("Word document created with customized table cell size.");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}


---

### সারাংশ

**Apache POI** লাইব্রেরি ব্যবহার করে আপনি **Word** ডকুমেন্টে টেবিল তৈরি এবং সম্পাদনা করতে পারেন। এর মাধ্যমে আপনি টেবিলের সেলগুলিতে টেক্সট যোগ করতে পারেন, সেল ফরম্যাটিং যেমন বোল্ড, ইটালিক, আন্ডারলাইন করতে পারেন, সেল মার্জ করতে পারেন এবং কলাম বা সারির আকার কাস্টমাইজ করতে পারেন। এটি বিশেষত ডাইনামিক কন্টেন্ট তৈরি বা রিপোর্ট জেনারেশনের জন্য উপকারী।
common.content_added_by

XWPFTable এর মাধ্যমে টেবিল তৈরি করা

123
123

Apache POI লাইব্রেরি ব্যবহার করে আপনি সহজেই Word ডকুমেন্টে টেবিল (Table) তৈরি করতে পারেন। XWPFTable ক্লাসটির মাধ্যমে আপনি .docx ফাইলের মধ্যে টেবিল তৈরি, সম্পাদনা এবং কাস্টমাইজ করতে পারবেন। এই উদাহরণে আমরা একটি সাধারণ টেবিল তৈরি করব এবং এতে কিছু ডাটা যুক্ত করব।


XWPFTable এর মাধ্যমে টেবিল তৈরি করার উদাহরণ

import org.apache.poi.xwpf.usermodel.*;

import java.io.*;

public class CreateTableInWord {
    public static void main(String[] args) {
        try {
            // নতুন Word ডকুমেন্ট তৈরি
            XWPFDocument document = new XWPFDocument();

            // টেবিল তৈরি
            XWPFTable table = document.createTable();

            // প্রথম রো যোগ করা
            XWPFTableRow row = table.getRow(0);
            row.getCell(0).setText("নাম");
            row.addNewTableCell().setText("বয়স");
            row.addNewTableCell().setText("শহর");

            // দ্বিতীয় রো যোগ করা
            row = table.createRow();
            row.getCell(0).setText("জন");
            row.getCell(1).setText("২৫");
            row.getCell(2).setText("ঢাকা");

            // তৃতীয় রো যোগ করা
            row = table.createRow();
            row.getCell(0).setText("মিনা");
            row.getCell(1).setText("৩০");
            row.getCell(2).setText("চট্টগ্রাম");

            // ডকুমেন্টটি সেভ করা
            FileOutputStream out = new FileOutputStream("document_with_table.docx");
            document.write(out);
            out.close();

            System.out.println("Word ডকুমেন্টে টেবিল সফলভাবে তৈরি করা হয়েছে!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

কোড বিশ্লেষণ:

  1. XWPFDocument: এটি একটি নতুন .docx ডকুমেন্ট তৈরি করার জন্য ব্যবহৃত হয়।
  2. createTable(): এটি একটি নতুন টেবিল তৈরি করার জন্য ব্যবহার করা হয়।
  3. getRow(0): প্রথম রো (row) তৈরি হয় এবং সেটি অ্যাক্সেস করা হয়।
  4. addNewTableCell(): প্রতিটি রোতে নতুন সেল (cell) যোগ করা হয় এবং সেলগুলিতে টেক্সট সেট করা হয়।
  5. createRow(): নতুন রো তৈরি করার জন্য এই মেথডটি ব্যবহার করা হয়।
  6. FileOutputStream: এটি ডকুমেন্টটি সেভ করার জন্য ব্যবহৃত হয়।

এই কোডটি একটি টেবিল সহ document_with_table.docx নামক Word ডকুমেন্ট তৈরি করবে, যেখানে তিনটি রো এবং তিনটি কলাম থাকবে।


টেবিলের স্টাইল কাস্টমাইজেশন

আপনি XWPFTable এর মাধ্যমে টেবিলের বিভিন্ন স্টাইল কাস্টমাইজ করতে পারেন। নিচে কিছু অতিরিক্ত স্টাইল কাস্টমাইজেশন দেওয়া হলো:

১. টেবিলের সীমানা (Borders) কাস্টমাইজ করা:

// টেবিলের সীমানা সেট করা
table.setTableBorder(XWPFTable.XWPFBorderType.SINGLE, 1, 0, 0, 0);

২. টেবিলের সেল (Cell) এর স্টাইল কাস্টমাইজ করা:

// সেল স্টাইল কাস্টমাইজ করা
XWPFTableCell cell = row.getCell(0);
cell.setColor("FFFF00");  // সেল রঙ হলুদ
cell.setText("এটি একটি স্টাইলড সেল");

৩. টেবিলের কলাম প্রস্থ (Column Width) সেট করা:

// কলামের প্রস্থ কাস্টমাইজ করা
row.getCell(0).getCTTc().getTcPr().addNewTcW().setW(2000);  // প্রস্থ 2000 ইউনিট

৪. টেবিলের রো/কলাম এলাইনমেন্ট (Alignment):

// রো এলাইনমেন্ট (সেন্টার)
table.setTableAlignment(TableRowAlignment.CENTER);

সারাংশ

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


common.content_added_by

টেবিলের Rows এবং Columns যোগ করা

168
168

Apache POI এর XWPF API ব্যবহার করে আপনি Word ডকুমেন্টে টেবিল তৈরি এবং এতে rows (সারি) এবং columns (কলাম) যোগ করতে পারেন। একটি টেবিলের মধ্যে ডেটা ইনসার্ট করা এবং সেগুলোর সেল (cell) কনটেন্ট সেট করা খুবই সহজ। এখানে আমরা টেবিলের রো (row) এবং কলাম (column) যোগ করার প্রক্রিয়া দেখবো।


Step 1: Word ডকুমেন্টে টেবিল তৈরি

প্রথমে একটি নতুন Word ডকুমেন্ট তৈরি করতে হবে, তারপর টেবিল তৈরি এবং এতে সেল যোগ করা হবে।

Example: টেবিল তৈরি এবং রো ও কলাম যোগ করা

import org.apache.poi.xwpf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class TableInWordDocument {
    public static void main(String[] args) throws IOException {
        // নতুন Word ডকুমেন্ট তৈরি
        XWPFDocument document = new XWPFDocument();

        // টেবিল তৈরি
        XWPFTable table = document.createTable();

        // প্রথম সারির সেল যোগ করা (প্রথম কলাম)
        XWPFTableRow row1 = table.getRow(0);
        row1.getCell(0).setText("নাম");
        row1.addNewTableCell().setText("বয়স");
        row1.addNewTableCell().setText("শহর");

        // দ্বিতীয় সারির সেল যোগ করা
        XWPFTableRow row2 = table.createRow();
        row2.getCell(0).setText("জন Doe");
        row2.getCell(1).setText("30");
        row2.getCell(2).setText("ঢাকা");

        // তৃতীয় সারির সেল যোগ করা
        XWPFTableRow row3 = table.createRow();
        row3.getCell(0).setText("মালা Roy");
        row3.getCell(1).setText("25");
        row3.getCell(2).setText("চট্টগ্রাম");

        // ডকুমেন্ট সংরক্ষণ
        FileOutputStream out = new FileOutputStream("TableExample.docx");
        document.write(out);
        out.close();

        System.out.println("টেবিল সহ ডকুমেন্ট তৈরি এবং সংরক্ষণ করা হয়েছে।");
    }
}

Code Breakdown:

  1. createTable(): একটি নতুন টেবিল তৈরি করা হয়েছে।
  2. getRow(0): প্রথম সারি (row) পাওয়া গেছে।
  3. addNewTableCell(): কলাম (cell) যোগ করা হয়েছে।
  4. createRow(): নতুন সারি (row) তৈরি করা হয়েছে।
  5. getCell(0), getCell(1), etc.: প্রতিটি সেলে টেক্সট সেট করা হয়েছে।

Step 2: টেবিলের সেল যোগ করা এবং কনটেন্ট সেট করা

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

Example: আরও সারি এবং কলাম যোগ করা

// চতুর্থ সারি যোগ করা
XWPFTableRow row4 = table.createRow();
row4.getCell(0).setText("রাহুল Kumar");
row4.getCell(1).setText("28");
row4.getCell(2).setText("রাজশাহী");

// পঞ্চম সারি যোগ করা
XWPFTableRow row5 = table.createRow();
row5.getCell(0).setText("সুমি Roy");
row5.getCell(1).setText("32");
row5.getCell(2).setText("বরিশাল");

এইভাবে আপনি আরও সারি এবং কলাম যোগ করতে পারেন।


Step 3: টেবিলের রো এবং কলাম সংখ্যা পরিবর্তন

Apache POI এ, একটি টেবিলের রো (row) এবং কলাম (column) সংখ্যা ডাইনামিকভাবে পরিবর্তন করা সম্ভব নয় (যেমন, কোনো নির্দিষ্ট কলাম সরানো বা পুনর্বিন্যাস করা)। তবে আপনি টেবিলের মধ্যে নতুন সারি ও কলাম যুক্ত করতে পারেন বা বিদ্যমান সেলকে নতুন মান দিয়ে প্রতিস্থাপন করতে পারেন।


সারাংশ

Apache POI এর XWPF API ব্যবহার করে আপনি Word ডকুমেন্টে সহজেই টেবিল তৈরি, সারি (row) এবং কলাম (column) যোগ করতে পারেন। প্রতিটি সেলে তথ্য প্রবেশ করানো এবং টেবিলের স্ট্রাকচার তৈরি করা খুবই সরল। এটি আপনার ডকুমেন্টে তথ্য উপস্থাপনার জন্য অত্যন্ত কার্যকর একটি টুল।


common.content_added_by

Cell Merging এবং Table Formatting

146
146

Apache POI ব্যবহার করে আপনি Microsoft Word ডকুমেন্টে Table তৈরি, Cell Merging, এবং Table Formatting করতে পারবেন। নিচে টেবিল সম্পর্কিত কাজগুলোর বিস্তারিত ব্যাখ্যা দেওয়া হলো।


১. Table তৈরি করা

প্রথমে, XWPFTable ব্যবহার করে একটি টেবিল তৈরি করা হয়। এই টেবিলের মধ্যে XWPFTableRow এবং XWPFTableCell ক্লাসের মাধ্যমে প্রতিটি সারি এবং সেলের বিষয়বস্তু নিয়ন্ত্রণ করা হয়।

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class CreateTableExample {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();

        // টেবিল তৈরি
        XWPFTable table = document.createTable();

        // প্রথম সারি তৈরি
        XWPFTableRow row1 = table.getRow(0);
        row1.getCell(0).setText("Cell 1");
        row1.addNewTableCell().setText("Cell 2");

        // দ্বিতীয় সারি তৈরি
        XWPFTableRow row2 = table.createRow();
        row2.getCell(0).setText("Cell 3");
        row2.getCell(1).setText("Cell 4");

        // ডকুমেন্ট সেভ করা
        FileOutputStream out = new FileOutputStream("table_example.docx");
        document.write(out);
        out.close();
    }
}

এখানে, প্রথমে একটি টেবিল তৈরি করা হয়েছে এবং তারপরে প্রতিটি সারিতে সেল যোগ করা হয়েছে।


২. Cell Merging (Cell একত্রিত করা)

আপনি যদি টেবিলের একটি বা একাধিক সেল একত্রিত করতে চান, তাহলে XWPFTableCell এর merge() মেথড ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি প্রথম সারির প্রথম দুই সেল একত্রিত করতে চান:

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class MergeCellsExample {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();

        // টেবিল তৈরি
        XWPFTable table = document.createTable();

        // প্রথম সারি তৈরি
        XWPFTableRow row1 = table.getRow(0);
        row1.getCell(0).setText("Merged Cell 1");
        row1.addNewTableCell().setText("Cell 2");

        // দ্বিতীয় সারি তৈরি
        XWPFTableRow row2 = table.createRow();
        row2.getCell(0).setText("Cell 3");
        row2.getCell(1).setText("Cell 4");

        // প্রথম সারির প্রথম দুটি সেল একত্রিত করা
        row1.getCell(0).merge(row1.getCell(1));

        // ডকুমেন্ট সেভ করা
        FileOutputStream out = new FileOutputStream("merged_cells_example.docx");
        document.write(out);
        out.close();
    }
}

এখানে, merge() মেথড ব্যবহার করে প্রথম সারির প্রথম দুটি সেল একত্রিত করা হয়েছে।


৩. Table Formatting (টেবিল ফরম্যাটিং)

Apache POI ব্যবহার করে আপনি টেবিলের বিভিন্ন অংশের ফরম্যাটিং করতে পারেন, যেমন টেবিলের প্রান্ত, সেলের স্টাইল, টেক্সট ফরম্যাটিং ইত্যাদি।

৩.১ টেবিলের প্রান্ত এবং সীমা

টেবিলের সীমানা এবং প্রান্ত কাস্টমাইজ করার জন্য XWPFTable এর setTableBorders() মেথড ব্যবহার করা হয়।

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class TableBorderExample {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();

        // টেবিল তৈরি
        XWPFTable table = document.createTable();

        // টেবিলের সীমানা সেট করা
        table.setTableBorders(TableCellBorderType.SINGLE);

        // প্রথম সারি তৈরি
        XWPFTableRow row1 = table.getRow(0);
        row1.getCell(0).setText("Cell 1");
        row1.addNewTableCell().setText("Cell 2");

        // দ্বিতীয় সারি তৈরি
        XWPFTableRow row2 = table.createRow();
        row2.getCell(0).setText("Cell 3");
        row2.getCell(1).setText("Cell 4");

        // ডকুমেন্ট সেভ করা
        FileOutputStream out = new FileOutputStream("table_with_border.docx");
        document.write(out);
        out.close();
    }
}

এখানে, setTableBorders() ব্যবহার করে টেবিলের সীমানা নির্ধারণ করা হয়েছে।

৩.২ Cell Alignment (সেল অ্যালাইনমেন্ট)

একইভাবে, সেলের টেক্সট অ্যালাইনমেন্ট (center, left, right) নিয়ন্ত্রণ করতে XWPFTableCell এর setTextAlignment() মেথড ব্যবহার করা হয়।

import org.apache.poi.xwpf.usermodel.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class CellAlignmentExample {
    public static void main(String[] args) throws IOException {
        XWPFDocument document = new XWPFDocument();

        // টেবিল তৈরি
        XWPFTable table = document.createTable();

        // প্রথম সারি তৈরি
        XWPFTableRow row1 = table.getRow(0);
        XWPFTableCell cell1 = row1.getCell(0);
        cell1.setText("Left Aligned");
        cell1.setTextAlignment(ParagraphAlignment.LEFT);  // বামদিকে অ্যালাইন করা

        // দ্বিতীয় সারি তৈরি
        XWPFTableRow row2 = table.createRow();
        XWPFTableCell cell2 = row2.getCell(0);
        cell2.setText("Right Aligned");
        cell2.setTextAlignment(ParagraphAlignment.RIGHT);  // ডানদিকে অ্যালাইন করা

        // ডকুমেন্ট সেভ করা
        FileOutputStream out = new FileOutputStream("cell_alignment_example.docx");
        document.write(out);
        out.close();
    }
}

এখানে, setTextAlignment() ব্যবহার করে সেলের টেক্সট অ্যালাইনমেন্ট পরিবর্তন করা হয়েছে।


৪. সারাংশ

Apache POI এর মাধ্যমে Table তৈরি, Cell Merging, এবং Table Formatting করা খুবই সহজ। টেবিলের সেল একত্রিত করার জন্য merge() মেথড এবং টেবিলের ফরম্যাটিং কাস্টমাইজ করার জন্য বিভিন্ন মেথড যেমন setTableBorders() এবং setTextAlignment() ব্যবহৃত হয়। এর মাধ্যমে আপনি Word ডকুমেন্টে প্রফেশনাল এবং কাস্টমাইজড টেবিল তৈরি করতে পারবেন।

common.content_added_by

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

128
128

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