Skill

Word ফাইল ম্যানিপুলেশন (HWPF এবং XWPF)

অ্যাপাচি পিওআই (Apache POI) - Java Technologies

195

Apache POI একটি শক্তিশালী লাইব্রেরি যা Microsoft Word ফাইল (যেমন .doc এবং .docx) ম্যানিপুলেট এবং প্রোসেস করতে ব্যবহৃত হয়। Apache POI এর মাধ্যমে আপনি HWPF (যেটি .doc ফাইলের জন্য ব্যবহৃত) এবং XWPF (যেটি .docx ফাইলের জন্য ব্যবহৃত) API ব্যবহার করে Word ডকুমেন্ট তৈরি, পাঠানো, সম্পাদনা, এবং বিশ্লেষণ করতে পারেন।

এই গাইডে, আমরা দেখব HWPF এবং XWPF API ব্যবহার করে Word ফাইল ম্যানিপুলেশন কিভাবে করা যায়।


১. HWPF API দিয়ে .doc ফাইল ম্যানিপুলেশন

HWPF API ব্যবহার করে আপনি পুরোনো Word 97-2003 ফাইল (.doc) ম্যানিপুলেট করতে পারেন। এতে কিছু সীমাবদ্ধতা থাকলেও এটি পুরোনো ফাইল ফরম্যাটগুলোর জন্য উপযোগী।

উদাহরণ: .doc ফাইল থেকে টেক্সট পড়া

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class HWPFExample {
    public static void main(String[] args) throws IOException {
        // .doc ফাইল থেকে HWPFDocument তৈরি
        FileInputStream fis = new FileInputStream(new File("example.doc"));
        HWPFDocument document = new HWPFDocument(fis);

        // ডকুমেন্টের সমস্ত টেক্সট পড়া
        Range range = document.getRange();
        String text = range.text();
        
        // টেক্সট আউটপুট
        System.out.println("Document text: " + text);

        // ফাইল ইনপুট স্ট্রিম বন্ধ করা
        fis.close();
    }
}

ব্যাখ্যা:

  • HWPFDocument: এটি .doc ফাইলের জন্য ব্যবহৃত ক্লাস, যা ফাইলটি ওপেন করে।
  • getRange(): এই মেথডটি ডকুমেন্টের সমস্ত টেক্সটের একটি Range অবজেক্ট প্রদান করে।

উদাহরণ: .doc ফাইলে টেক্সট যোগ করা

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class HWPFTextWriteExample {
    public static void main(String[] args) throws IOException {
        // .doc ফাইল থেকে HWPFDocument তৈরি
        FileInputStream fis = new FileInputStream(new File("example.doc"));
        HWPFDocument document = new HWPFDocument(fis);

        // টেক্সট যোগ করা
        Range range = document.getRange();
        range.insertAfter("This is a new line added to the document.");

        // আপডেটেড ডকুমেন্ট সেভ করা
        try (FileOutputStream fos = new FileOutputStream("example_modified.doc")) {
            document.write(fos);
        }

        // ফাইল ইনপুট স্ট্রিম বন্ধ করা
        fis.close();
    }
}

ব্যাখ্যা:

  • insertAfter: এই মেথডটি টেক্সট বা কন্টেন্ট ডকুমেন্টের শেষে যোগ করতে ব্যবহৃত হয়।

২. XWPF API দিয়ে .docx ফাইল ম্যানিপুলেশন

XWPF API ব্যবহার করে আপনি আধুনিক Word 2007+ ফাইল (যেমন .docx) ম্যানিপুলেট করতে পারেন। এটি অত্যন্ত শক্তিশালী এবং নমনীয়, যা ডকুমেন্টের বিভিন্ন উপাদান যেমন Paragraph, Table, Text, Image ইত্যাদি পরিচালনা করতে সহায়তা করে।

উদাহরণ: .docx ফাইল থেকে টেক্সট পড়া

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFFactory;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

public class XWPFReadExample {
    public static void main(String[] args) throws IOException {
        // .docx ফাইল থেকে XWPFDocument তৈরি
        FileInputStream fis = new FileInputStream(new File("example.docx"));
        XWPFDocument document = new XWPFDocument(fis);

        // সমস্ত প্যারাগ্রাফের মধ্যে থেকে টেক্সট পড়া
        List<XWPFParagraph> paragraphs = document.getParagraphs();
        for (XWPFParagraph paragraph : paragraphs) {
            System.out.println(paragraph.getText());
        }

        // ফাইল ইনপুট স্ট্রিম বন্ধ করা
        fis.close();
    }
}

ব্যাখ্যা:

  • XWPFDocument: এটি .docx ফাইলের জন্য ব্যবহৃত ক্লাস, যা ফাইলটি ওপেন করে।
  • getParagraphs(): এটি ডকুমেন্টের সমস্ত প্যারাগ্রাফের একটি তালিকা প্রদান করে, যার মধ্যে আপনি টেক্সট পড়তে পারবেন।

উদাহরণ: .docx ফাইলে প্যারাগ্রাফ যোগ করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

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

public class XWPFTextWriteExample {
    public static void main(String[] args) throws IOException {
        // নতুন XWPFDocument তৈরি
        XWPFDocument document = new XWPFDocument();

        // একটি প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();
        paragraph.createRun().setText("This is a new paragraph added to the document.");

        // নতুন ডকুমেন্ট সেভ করা
        try (FileOutputStream fos = new FileOutputStream(new File("example_modified.docx"))) {
            document.write(fos);
        }

        // ডকুমেন্ট বন্ধ করা
        document.close();
    }
}

ব্যাখ্যা:

  • createParagraph(): এটি একটি নতুন প্যারাগ্রাফ তৈরি করতে ব্যবহৃত হয়।
  • createRun(): এটি একটি নতুন Run তৈরি করে, যেখানে টেক্সট যোগ করা যায়।

৩. Table ম্যানিপুলেশন (XWPF)

XWPF API এর মাধ্যমে আপনি .docx ফাইলে টেবিল তৈরি এবং ম্যানিপুলেট করতে পারেন। নিচে একটি উদাহরণ দেওয়া হচ্ছে যেখানে একটি টেবিল তৈরি করা হবে এবং তার মধ্যে কিছু ডেটা ইনপুট করা হবে।

উদাহরণ: .docx ফাইলে টেবিল তৈরি করা

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

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

public class XWPFTableExample {
    public static void main(String[] args) throws IOException {
        // নতুন XWPFDocument তৈরি
        XWPFDocument document = new XWPFDocument();

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

        // টেবিলের প্রথম সারি তৈরি করা
        XWPFTableRow row = table.getRow(0);
        row.getCell(0).setText("Header 1");
        row.addNewTableCell().setText("Header 2");

        // টেবিলের দ্বিতীয় সারি তৈরি করা
        row = table.createRow();
        row.getCell(0).setText("Row 1, Cell 1");
        row.getCell(1).setText("Row 1, Cell 2");

        // টেবিলের তৃতীয় সারি তৈরি করা
        row = table.createRow();
        row.getCell(0).setText("Row 2, Cell 1");
        row.getCell(1).setText("Row 2, Cell 2");

        // ডকুমেন্ট সেভ করা
        try (FileOutputStream fos = new FileOutputStream(new File("example_with_table.docx"))) {
            document.write(fos);
        }

        // ডকুমেন্ট বন্ধ করা
        document.close();
    }
}

ব্যাখ্যা:

  • createTable(): এটি একটি নতুন টেবিল তৈরি করে।
  • createRow(): এটি একটি নতুন সারি (Row) তৈরি করে এবং getCell(0) বা getCell(1) ব্যবহার করে সেল (Cell) এ ডেটা সেট করা হয়।

সারাংশ

  • HWPF API ব্যবহার করে .doc ফাইলের টেক্সট পড়া, লেখা এবং ফর্ম্যাটিং করা সম্ভব।
  • XWPF API .docx ফাইলের জন্য আরও সমৃদ্ধ ফিচার প্রদান করে, যেমন প্যারাগ্রাফ, টেবিল, ছবি, স্টাইল ইত্যাদি।
  • আপনি XWPF এবং HWPF API এর মাধ্যমে Word ডকুমেন্ট তৈরি, সম্পাদনা এবং ফর্ম্যাট করতে পারেন।
Content added By

Apache POI লাইব্রেরি Microsoft Word ডকুমেন্টের সাথে কাজ করার জন্য দুটি প্রধান কম্পোনেন্ট সরবরাহ করে: HWPF এবং XWPF। এই দুটি কম্পোনেন্ট Word ডকুমেন্টের বিভিন্ন ফরম্যাটের জন্য ব্যবহৃত হয়। HWPF পুরনো .doc ফরম্যাটের জন্য এবং XWPF আধুনিক .docx ফরম্যাটের জন্য ব্যবহৃত হয়। নিচে এই দুইটির মধ্যে মূল পার্থক্য আলোচনা করা হলো।


1. HWPF (Horrible Word Processor File)

HWPF ব্যবহার করা হয় Microsoft Word 97-2003 (.doc) ফরম্যাটের ডকুমেন্ট ম্যানিপুলেট করতে। এই ফরম্যাটটি পুরনো Word সংস্করণগুলোতে ব্যবহৃত হত এবং এতে অনেক সীমাবদ্ধতা ছিল, যেমন এটি বাইনারি ফরম্যাটে ডেটা সংরক্ষণ করে।

1.1 মূল বৈশিষ্ট্য:

  • .doc ফরম্যাটের জন্য ব্যবহৃত হয় (Word 97-2003)।
  • পুরনো Word ডকুমেন্ট ফাইলের সাথে কাজ করতে সহায়তা করে।
  • বাইনারি ফরম্যাটে সংরক্ষিত ডেটা।
  • Text, Paragraph, Font ইত্যাদি টেক্সট ফিচার ম্যানিপুলেশন করা সম্ভব।

1.2 সীমাবদ্ধতা:

  • এটি XML-based ফাইল স্ট্রাকচারকে সমর্থন করে না, তাই নতুন Word ডকুমেন্টগুলোর জন্য উপযুক্ত নয়।
  • উন্নত ফিচার যেমন SmartArt, Graphics, Tables এবং Images এর সমর্থন সীমিত।

2. XWPF (XML Word Processing Format)

XWPF ব্যবহার করা হয় Microsoft Word 2007 (and later) .docx ফরম্যাটের ডকুমেন্ট ম্যানিপুলেট করতে। এটি একটি XML-based ফরম্যাট, যা ডকুমেন্টের গঠন, স্টাইল এবং কন্টেন্টকে আরও ফ্লেক্সিবল এবং রিডেবল করে তোলে।

2.1 মূল বৈশিষ্ট্য:

  • .docx ফরম্যাটের জন্য ব্যবহৃত হয় (Word 2007 এবং পরবর্তী সংস্করণ)।
  • XML-based ফরম্যাট, যা ডেটার গঠনকে সহজে বিশ্লেষণযোগ্য করে তোলে।
  • উন্নত ফিচার সমর্থন করে যেমন Tables, Images, Hyperlinks, Headers, Footers, Charts ইত্যাদি।
  • এটি Open XML স্ট্যান্ডার্ড অনুসরণ করে এবং উন্নত ফিচার ম্যানিপুলেশনের জন্য আরও অনেক টুল এবং লাইব্রেরি সমর্থন করে।

2.2 সুবিধা:

  • XML ফরম্যাটের কারণে ডকুমেন্টে আরও বেশি কাস্টমাইজেশন এবং প্রসেসিং অপশন রয়েছে।
  • আধুনিক Word ডকুমেন্টগুলোর জন্য এটি আদর্শ, কারণ এটি Microsoft Word 2007 এবং পরবর্তী সংস্করণের ডকুমেন্ট ফরম্যাটে কাজ করে।
  • SmartArt, Graphics, Content Controls, WordArt সহ অনেক আধুনিক ফিচার সমর্থন করে।

3. HWPF এবং XWPF এর মধ্যে পার্থক্য

ফিচারHWPFXWPF
ফাইল ফরম্যাট.doc (Word 97-2003).docx (Word 2007 এবং পরবর্তী)
ফরম্যাট টাইপবাইনারি ফরম্যাটXML-based ফরম্যাট
ফিচার সাপোর্টসীমিত (পুরনো Word ফিচার)আধুনিক ফিচার সমর্থন (SmartArt, Charts, Content Controls)
স্টাইলিং এবং ফর্ম্যাটিংম্যানুয়ালি ম্যানিপুলেট করা সহজসহজ XML স্ট্রাকচার, বেশি ফ্লেক্সিবল
ডকুমেন্ট সেগমেন্টেশনকম সেগমেন্টেশন বা স্ট্রাকচারউন্নত স্ট্রাকচার (Paragraph, Table, Run, Header/Footer)
প্ল্যাটফর্ম সমর্থনপুরনো ফাইল ফরম্যাটআধুনিক ডকুমেন্ট প্ল্যাটফর্মের জন্য (Microsoft Office 2007 এবং পরবর্তী)
ফাইল সাইজসাধারণত ছোটকিছুটা বড় (কারণ XML স্ট্রাকচার)
ফাইল কম্প্যাটিবিলিটিনতুন Word ভার্সনের সাথে সীমিতনতুন এবং পুরনো Word ভার্সনের সাথে ভালো কম্প্যাটিবিলিটি

4. কোনটা কখন ব্যবহার করবেন?

  • HWPF ব্যবহার করবেন যদি আপনার কাজের ডকুমেন্টগুলি Word 97-2003 (পুরনো .doc ফরম্যাট) ফাইলের সাথে সম্পর্কিত হয় এবং আপনি শুধুমাত্র সিম্পল ফিচার যেমন টেক্সট, প্যারাগ্রাফ, ফন্ট ইত্যাদি নিয়েই কাজ করছেন।
  • XWPF ব্যবহার করবেন যদি আপনার কাজের ডকুমেন্টগুলি Word 2007 এবং পরবর্তী (.docx) ফরম্যাটের সাথে সম্পর্কিত হয় এবং আপনি আধুনিক ফিচার যেমন টেবিল, চিত্র, চার্ট, ফর্ম্যাটিং, এবং অন্যান্য উন্নত কন্টেন্ট ম্যানিপুলেশন করতে চান।

সারাংশ

HWPF এবং XWPF মূলত দুটি আলাদা ফাইল ফরম্যাটের জন্য ব্যবহৃত হয়:

  • HWPF পুরনো .doc ফাইলের জন্য এবং এটি বাইনারি ফরম্যাটে কাজ করে।
  • XWPF আধুনিক .docx ফাইলের জন্য এবং এটি XML ভিত্তিক ফরম্যাটে কাজ করে, যা আধুনিক ফিচার সমর্থন করে।

আপনার প্রোজেক্টের প্রয়োজন অনুসারে উপযুক্ত কম্পোনেন্ট ব্যবহার করা উচিত।

Content added By

Apache POI ব্যবহার করে আপনি Word ডকুমেন্ট তৈরি এবং সেভ করতে পারেন, سواء তা DOC ফরম্যাট বা DOCX ফরম্যাটে। POI এর HWPF এবং XWPF API ব্যবহার করে আপনি Word 97-2003 (DOC) এবং Word 2007+ (DOCX) ফরম্যাটে ডকুমেন্ট তৈরি করতে পারবেন।

এখানে আলোচনা করা হবে কিভাবে Apache POI এর মাধ্যমে Word ফাইল তৈরি এবং সেভ করা যায়।


DOC এবং DOCX ফাইল তৈরি করা

১. DOCX ফাইল তৈরি করা (XWPF API)

XWPF (XML Word Processing Format) ব্যবহার করে DOCX ফাইল তৈরি করা হয়। এটি Word 2007 বা তার পরবর্তী সংস্করণের জন্য উপযুক্ত।

উদাহরণ: DOCX ফাইল তৈরি এবং সেভ করা

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileOutputStream;
import java.io.IOException;

public class CreateWordDocx {
    public static void main(String[] args) {
        try {
            // Create a new XWPFDocument (DOCX)
            XWPFDocument document = new XWPFDocument();
            
            // Create a paragraph
            XWPFParagraph paragraph = document.createParagraph();
            XWPFRun run = paragraph.createRun();
            run.setText("Hello, this is a sample DOCX file created with Apache POI!");
            run.setBold(true);
            run.setFontSize(14);
            
            // Save the document to a file
            FileOutputStream out = new FileOutputStream("SampleDOCXFile.docx");
            document.write(out);
            out.close();
            System.out.println("DOCX file created successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে একটি সাধারণ DOCX ফাইল তৈরি করা হয়েছে যেখানে একটি প্যারাগ্রাফ এবং কিছু টেক্সট রয়েছে। ফাইলটি SampleDOCXFile.docx নামে সেভ করা হয়েছে।

২. DOC ফাইল তৈরি করা (HWPF API)

HWPF API Word 97-2003 (DOC) ফাইল তৈরি করার জন্য ব্যবহৃত হয়। এটি পুরানো ফরম্যাটের Word ডকুমেন্টের জন্য ব্যবহৃত হয়।

উদাহরণ: DOC ফাইল তৈরি এবং সেভ করা

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.usermodel.Range;
import java.io.FileOutputStream;
import java.io.IOException;

public class CreateWordDoc {
    public static void main(String[] args) {
        try {
            // Create a new HWPFDocument (DOC)
            HWPFDocument document = new HWPFDocument();
            
            // Create a range and add text to it
            Range range = document.getRange();
            range.insertAfter("Hello, this is a sample DOC file created with Apache POI!");
            
            // Save the document to a file
            FileOutputStream out = new FileOutputStream("SampleDOCFile.doc");
            document.write(out);
            out.close();
            System.out.println("DOC file created successfully!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

এখানে একটি সাধারণ DOC ফাইল তৈরি করা হয়েছে, এবং টেক্সট SampleDOCFile.doc নামে সেভ করা হয়েছে।


DOCX ফাইলের মধ্যে বিভিন্ন উপাদান যোগ করা

XWPF API এর মাধ্যমে আপনি DOCX ফাইলে আরও অনেক কিছু যোগ করতে পারেন, যেমন:

  1. Paragraphs: নতুন প্যারাগ্রাফ তৈরি করা এবং টেক্সট যোগ করা।
  2. Tables: টেবিল তৈরি এবং কনটেন্ট ফিল করা।
  3. Images: ডকুমেন্টে ছবি ইনসার্ট করা।
  4. Lists: Ordered বা Unordered লিস্ট তৈরি করা।

উদাহরণ: প্যারাগ্রাফ, টেবিল এবং ইমেজ যোগ করা

import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;
import org.apache.poi.xwpf.usermodel.XWPFPicture;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

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

        // Create a paragraph
        XWPFParagraph paragraph = document.createParagraph();
        paragraph.createRun().setText("This is a paragraph with text.");

        // Create a table with one row and two columns
        XWPFTable table = document.createTable(1, 2);
        XWPFTableRow tableRow = table.getRow(0);
        XWPFTableCell cell1 = tableRow.getCell(0);
        cell1.setText("Cell 1");
        XWPFTableCell cell2 = tableRow.getCell(1);
        cell2.setText("Cell 2");

        // Add an image to the document
        File imgFile = new File("image.jpg");
        XWPFPictureData pictureData = document.addPictureData(imgFile, XWPFPictureData.PICTURE_TYPE_JPEG);
        XWPFPicture picture = paragraph.createRun().addPicture(pictureData, XWPFPictureData.PICTURE_TYPE_JPEG, imgFile.getName(), 200, 200);

        // Save the document
        FileOutputStream out = new FileOutputStream("AdvancedSampleDOCX.docx");
        document.write(out);
        out.close();
    }
}

এখানে একটি প্যারাগ্রাফ, টেবিল এবং একটি ছবি DOCX ফাইলে যোগ করা হয়েছে।


সারাংশ

Apache POI এর মাধ্যমে আপনি সহজেই Word ডকুমেন্ট তৈরি করতে পারেন, είτε তা DOC ফরম্যাট (HWPF API) বা DOCX ফরম্যাট (XWPF API) এ। আপনি টেক্সট, প্যারাগ্রাফ, টেবিল, ছবি ইত্যাদি বিভিন্ন উপাদান যোগ করতে পারেন, এবং ফাইলটি আপনার পছন্দমতো সেভ করতে পারেন। Apache POI একটি শক্তিশালী লাইব্রেরি যা Java এ ডকুমেন্ট প্রসেসিংয়ের জন্য অত্যন্ত কার্যকরী।


Content added By

Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টের (DOCX ফাইল) মধ্যে Paragraph এবং Run তৈরি করা সম্ভব। এই প্রক্রিয়াতে আমরা একাধিক টেক্সট স্টাইল (যেমন Bold, Italic, Underline) সহ Paragraph তৈরি করতে পারি।

এখানে আমরা XWPFDocument ব্যবহার করে Word ডকুমেন্টে Paragraph এবং Run তৈরি করার প্রক্রিয়া আলোচনা করব।


১. XWPFDocument দিয়ে Paragraph তৈরি করা

XWPFDocument ক্লাসটি DOCX ফাইলের ডকুমেন্ট তৈরি ও সম্পাদনা করার জন্য ব্যবহৃত হয়। XWPFParagraph একটি প্যারাগ্রাফ তৈরি করে এবং XWPFRun একটি রানের মাধ্যমে টেক্সট যুক্ত করা হয়, যেখানে আমরা টেক্সটের স্টাইল (Bold, Italic, Underline) নির্ধারণ করতে পারি।

উদাহরণ: Paragraph এবং Run তৈরি করা

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

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

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

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // রানের মাধ্যমে টেক্সট যোগ করা
        XWPFRun run1 = paragraph.createRun();
        run1.setText("Hello, ");
        run1.setBold(true);  // বোল্ড স্টাইল

        XWPFRun run2 = paragraph.createRun();
        run2.setText("this is a test document.");
        run2.setItalic(true);  // ইটালিক স্টাইল

        // ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("CreateParagraphAndRunExample.docx")) {
            document.write(out);
        }

        document.close();
    }
}

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

  1. XWPFDocument এর মাধ্যমে নতুন একটি Word ডকুমেন্ট তৈরি করা হয়েছে।
  2. XWPFParagraph দিয়ে একটি প্যারাগ্রাফ তৈরি করা হয়েছে।
  3. XWPFRun এর মাধ্যমে প্যারাগ্রাফে টেক্সট যোগ করা হয়েছে, যেখানে প্রথম রানে "Hello," বোল্ড স্টাইল এবং দ্বিতীয় রানে "this is a test document." ইটালিক স্টাইল প্রয়োগ করা হয়েছে।
  4. FileOutputStream ব্যবহার করে ডকুমেন্টটি সেভ করা হয়েছে।

২. Multiple Runs with Different Styles

একই প্যারাগ্রাফে একাধিক রান ব্যবহার করে বিভিন্ন ধরনের স্টাইল (যেমন Bold, Italic, Underline) যুক্ত করা যেতে পারে।

উদাহরণ: একাধিক রান ব্যবহার করে Paragraph তৈরি করা

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

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

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

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // প্রথম রান: Bold ও Underline
        XWPFRun run1 = paragraph.createRun();
        run1.setText("Apache POI ");
        run1.setBold(true);
        run1.setUnderline(UnderlinePatterns.SINGLE);  // আন্ডারলাইন

        // দ্বিতীয় রান: Italic ও Normal
        XWPFRun run2 = paragraph.createRun();
        run2.setText("makes it easy ");
        run2.setItalic(true);

        // তৃতীয় রান: Normal Text
        XWPFRun run3 = paragraph.createRun();
        run3.setText("to work with Word documents.");
        
        // ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("MultipleRunsInParagraphExample.docx")) {
            document.write(out);
        }

        document.close();
    }
}

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

  1. প্রথম রানটি Bold এবং Underline এ সেট করা হয়েছে।
  2. দ্বিতীয় রানটি Italic স্টাইলে তৈরি করা হয়েছে।
  3. তৃতীয় রানটি সাধারণ টেক্সট হিসেবে লেখা হয়েছে।
  4. ফাইলটি সেভ করা হয়েছে এবং এতে বিভিন্ন ধরনের স্টাইল সহ একাধিক রান থাকবে।

৩. Run এর মাধ্যমে টেক্সট ফরম্যাটিং

XWPFRun এর মাধ্যমে টেক্সটের বিভিন্ন ফরম্যাটিং স্টাইল (Bold, Italic, Underline, Font Size, Font Family ইত্যাদি) কাস্টমাইজ করা যেতে পারে।

উদাহরণ: Run এর মাধ্যমে Font Size এবং Font Family সেট করা

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

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

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

        // প্যারাগ্রাফ তৈরি করা
        XWPFParagraph paragraph = document.createParagraph();

        // রানের মাধ্যমে টেক্সট যোগ করা
        XWPFRun run = paragraph.createRun();
        run.setText("This is a customized font example.");
        
        // Font সাইজ এবং ফন্ট পরিবার সেট করা
        run.setFontSize(14);
        run.setFontFamily("Courier New");
        
        // ফাইল সেভ করা
        try (FileOutputStream out = new FileOutputStream("RunFontFormattingExample.docx")) {
            document.write(out);
        }

        document.close();
    }
}

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

  1. XWPFRun ব্যবহার করে টেক্সট "This is a customized font example." যোগ করা হয়েছে।
  2. setFontSize এবং setFontFamily পদ্ধতি ব্যবহার করে টেক্সটের ফন্ট সাইজ এবং ফন্ট পরিবার কাস্টমাইজ করা হয়েছে।
  3. ফাইলটি সেভ করা হয়েছে এবং এতে কাস্টমাইজড ফন্ট স্টাইল থাকবে।

সারাংশ

  • Apache POI লাইব্রেরি ব্যবহার করে Word ডকুমেন্টে Paragraph এবং Run তৈরি করা যায়।
  • XWPFParagraph দিয়ে প্যারাগ্রাফ তৈরি করা হয় এবং XWPFRun দিয়ে প্যারাগ্রাফে স্টাইলসহ টেক্সট যোগ করা হয়।
  • Run এর মাধ্যমে বিভিন্ন স্টাইল (যেমন Bold, Italic, Underline) ও Font Size, Font Family নির্ধারণ করা সম্ভব।
  • এই পদ্ধতিতে Word ডকুমেন্টে ডাইনামিকভাবে ফরম্যাট করা টেক্সট তৈরি করা যেতে পারে।
Content added By

Apache POI ব্যবহার করে আপনি Excel, Word, এবং PowerPoint ডকুমেন্টে টেবিল এবং ছবি যোগ করতে পারেন। নিচে আমরা Excel এবং Word ডকুমেন্টে টেবিল এবং ছবি যোগ করার পদ্ধতি দেখব।


১. Excel ফাইলে টেবিল এবং ছবি যোগ করা (XSSF)

১.১ টেবিল যোগ করা

Apache POI ব্যবহার করে আপনি Excel ফাইলে সহজে টেবিল তৈরি করতে পারেন। এর জন্য XSSF বা HSSF API ব্যবহার করা হয় (XSSF XLSX ফাইলের জন্য এবং HSSF XLS ফাইলের জন্য)।

উদাহরণ: Excel ফাইলে টেবিল যোগ করা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

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

public class ExcelTableExample {

    public static void main(String[] args) throws IOException {
        // এক্সেল ওয়ার্কবুক তৈরি
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Table Example");

        // টেবিলের জন্য রো তৈরি
        Row headerRow = sheet.createRow(0);
        headerRow.createCell(0).setCellValue("Name");
        headerRow.createCell(1).setCellValue("Age");
        headerRow.createCell(2).setCellValue("Department");

        Row row1 = sheet.createRow(1);
        row1.createCell(0).setCellValue("John");
        row1.createCell(1).setCellValue(30);
        row1.createCell(2).setCellValue("HR");

        Row row2 = sheet.createRow(2);
        row2.createCell(0).setCellValue("Alice");
        row2.createCell(1).setCellValue(28);
        row2.createCell(2).setCellValue("IT");

        // টেবিলের স্টাইলিং (যেমন: সেল বর্ডার)
        CellStyle style = workbook.createCellStyle();
        style.setBorderBottom(BorderStyle.THIN);
        style.setBorderTop(BorderStyle.THIN);
        style.setBorderRight(BorderStyle.THIN);
        style.setBorderLeft(BorderStyle.THIN);

        // সেল স্টাইল অ্যাপ্লাই করা
        for (Row row : sheet) {
            for (Cell cell : row) {
                cell.setCellStyle(style);
            }
        }

        // এক্সেল ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("excel_table_example.xlsx");
        workbook.write(fileOut);
        fileOut.close();

        System.out.println("Excel ফাইলে টেবিল সফলভাবে যোগ করা হয়েছে!");
    }
}

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

  • createRow(): টেবিলের রো তৈরি করা হয়েছে।
  • createCell(): প্রতিটি রোতে সেল তৈরি করা হয়েছে।
  • CellStyle: টেবিলের সেলগুলিতে বর্ডার অ্যাপ্লাই করা হয়েছে।

১.২ ছবি যোগ করা

Excel ফাইলে ছবি যোগ করতে, POIXSSFRichTextString এবং Drawing ব্যবহার করা হয়। এটি আপনার ফাইলের মধ্যে ছবি যুক্ত করতে সহায়তা করে।

উদাহরণ: Excel ফাইলে ছবি যোগ করা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelImageExample {

    public static void main(String[] args) throws IOException {
        // এক্সেল ওয়ার্কবুক তৈরি
        XSSFWorkbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Image Example");

        // ছবি ফাইলটি খোলা
        FileInputStream imageStream = new FileInputStream(new File("path_to_image.jpg"));
        byte[] imageBytes = imageStream.readAllBytes();
        int pictureIdx = workbook.addPicture(imageBytes, Workbook.PICTURE_TYPE_JPEG);

        // ছবি আনার জন্য ড্রইং তৈরি
        Drawing<?> drawing = sheet.createDrawingPatriarch();
        ClientAnchor anchor = workbook.getCreationHelper().createClientAnchor();
        anchor.setCol1(1);
        anchor.setRow1(1);

        // ছবি যোগ করা
        XSSFPicture picture = (XSSFPicture) drawing.createPicture(anchor, pictureIdx);

        // এক্সেল ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("excel_image_example.xlsx");
        workbook.write(fileOut);
        fileOut.close();
        imageStream.close();

        System.out.println("Excel ফাইলে ছবি সফলভাবে যোগ করা হয়েছে!");
    }
}

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

  • addPicture(): ছবি ফাইলটি এক্সেল ফাইলে যোগ করার জন্য এটি ব্যবহার করা হয়।
  • createClientAnchor(): ছবির অবস্থান নির্ধারণ করতে ব্যবহার করা হয়।
  • createPicture(): ছবিটি শিটে যোগ করা হয়।

২. Word ফাইলে টেবিল এবং ছবি যোগ করা (XWPF)

Apache POI ব্যবহার করে আপনি Word (DOCX) ফাইলে টেবিল এবং ছবি যোগ করতে পারেন। এখানে XWPFDocument ব্যবহার করা হয় Word ডকুমেন্ট তৈরি এবং তার মধ্যে টেবিল ও ছবি যোগ করার জন্য।

২.১ টেবিল যোগ করা

উদাহরণ: Word ফাইলে টেবিল যোগ করা

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

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

public class WordTableExample {

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

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

        // টেবিলের প্রথম রো তৈরি (হেডার)
        XWPFTableRow headerRow = table.getRow(0);
        headerRow.getCell(0).setText("Name");
        headerRow.addNewTableCell().setText("Age");
        headerRow.addNewTableCell().setText("Department");

        // টেবিলের পরবর্তী রো তৈরি
        XWPFTableRow row1 = table.createRow();
        row1.getCell(0).setText("John");
        row1.getCell(1).setText("30");
        row1.getCell(2).setText("HR");

        XWPFTableRow row2 = table.createRow();
        row2.getCell(0).setText("Alice");
        row2.getCell(1).setText("28");
        row2.getCell(2).setText("IT");

        // Word ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("word_table_example.docx");
        document.write(fileOut);
        fileOut.close();

        System.out.println("Word ফাইলে টেবিল সফলভাবে যোগ করা হয়েছে!");
    }
}

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

  • createTable(): টেবিল তৈরি করা হয়েছে।
  • getRow() এবং createRow(): টেবিলের রো তৈরি করা হয়েছে।

২.২ ছবি যোগ করা

Word ফাইলে ছবি যোগ করার জন্য XWPFPicture ক্লাস ব্যবহার করা হয়।

উদাহরণ: Word ফাইলে ছবি যোগ করা

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

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class WordImageExample {

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

        // ছবি ফাইলটি খোলা
        FileInputStream imageStream = new FileInputStream(new File("path_to_image.jpg"));

        // Word ফাইলে ছবি যোগ করা
        XWPFPicture picture = document.createPicture(imageStream, XWPFDocument.PICTURE_TYPE_JPEG);

        // Word ফাইল সেভ করা
        FileOutputStream fileOut = new FileOutputStream("word_image_example.docx");
        document.write(fileOut);
        fileOut.close();
        imageStream.close();

        System.out.println("Word ফাইলে ছবি সফলভাবে যোগ করা হয়েছে!");
    }
}

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

  • createPicture(): ছবিটি Word ডকুমেন্টে যোগ করার জন্য এটি ব্যবহার করা হয়।

সারাংশ

Apache POI ব্যবহার করে আপনি Excel এবং Word ডকুমেন্টে টেবিল এবং ছবি যোগ করতে পারেন। Excel ফাইলে XSSF বা HSSF ব্যবহার করে টেবিল এবং ছবি যোগ করা হয়, যেখানে Word ফাইলে XWPF ব্যবহার করা হয়। টেবিলের জন্য Row এবং Cell তৈরি করা হয়, এবং ছবির জন্য ClientAnchorDrawing ব্যবহার করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...