Apache POI এর XWPFDocument ক্লাসটি ব্যবহার করে আপনি Microsoft Word (DOCX) ডকুমেন্টে টেক্সট ম্যানিপুলেশন করতে পারেন। এটি আপনাকে ডকুমেন্টে টেক্সট যোগ করা, টেক্সট ফরম্যাটিং, টেক্সট পরিবর্তন, টেক্সট মুছে ফেলা, প্যারাগ্রাফে টেক্সট ইনসার্ট এবং আরও অনেক কিছু করতে সহায়তা করে।
নিচে কিছু সাধারণ টেক্সট ম্যানিপুলেশন কাজের উদাহরণ দেয়া হলো।
Word ডকুমেন্টে টেক্সট যোগ করার জন্য XWPFParagraph এবং XWPFRun ক্লাস ব্যবহার করা হয়। XWPFParagraph একটি প্যারাগ্রাফ তৈরি করে এবং XWPFRun টেক্সটের ফরম্যাট এবং স্টাইল নিয়ন্ত্রণ করে।
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 AddTextToWord {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// টেক্সট যোগ করা
run.setText("Hello, this is a new text added to the Word document.");
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("added_text_document.docx")) {
document.write(out);
}
System.out.println("Text added to the Word document!");
}
}
এখানে, createRun() মেথড ব্যবহার করে টেক্সট যোগ করা হয়েছে।
টেক্সট ফরম্যাটিং যেমন বোল্ড, ইটালিক, আন্ডারলাইন বা ফন্ট সাইজ পরিবর্তন করা যায়।
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 TextFormatting {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// টেক্সট যোগ এবং ফরম্যাট করা
run.setText("This is bold and italic text.");
run.setBold(true); // বোল্ড
run.setItalic(true); // ইটালিক
run.setFontSize(14); // ফন্ট সাইজ
run.setUnderline(true); // আন্ডারলাইন
run.setFontColor("FF5733"); // ফন্ট রঙ (হেক্স)
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("formatted_text_document.docx")) {
document.write(out);
}
System.out.println("Text with formatting added to the Word document!");
}
}
এখানে, setBold(), setItalic(), setFontSize(), setUnderline(), এবং setFontColor() মেথড ব্যবহার করে টেক্সট ফরম্যাট করা হয়েছে।
একটি ডকুমেন্টে একাধিক প্যারাগ্রাফে টেক্সট যোগ করা সম্ভব। আপনি একটি প্যারাগ্রাফ তৈরি করে তাতে একাধিক XWPFRun দিয়ে বিভিন্ন ফরম্যাটেড টেক্সট যোগ করতে পারেন।
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 MultipleParagraphs {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// প্রথম প্যারাগ্রাফে টেক্সট যোগ করা
XWPFParagraph paragraph1 = document.createParagraph();
XWPFRun run1 = paragraph1.createRun();
run1.setText("This is the first paragraph of the Word document.");
// দ্বিতীয় প্যারাগ্রাফে টেক্সট যোগ করা
XWPFParagraph paragraph2 = document.createParagraph();
XWPFRun run2 = paragraph2.createRun();
run2.setText("This is the second paragraph with different text.");
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("multiple_paragraphs.docx")) {
document.write(out);
}
System.out.println("Multiple paragraphs with text added to the Word document!");
}
}
এখানে, createParagraph() মেথড ব্যবহার করে বিভিন্ন প্যারাগ্রাফ তৈরি করা হয়েছে এবং প্রত্যেক প্যারাগ্রাফে আলাদা টেক্সট যোগ করা হয়েছে।
একবার টেক্সট যোগ করা হলে, আপনি সেই টেক্সট পরিবর্তন বা মুছতে পারেন। তবে, POI সরাসরি টেক্সট পরিবর্তন বা মুছে ফেলার জন্য কোন বিশেষ মেথড প্রদান করে না, তবে আপনি টেক্সটের অংশগুলি নতুনভাবে সেট করতে পারেন।
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 ModifyTextInWord {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// পুরানো টেক্সট যোগ করা
run.setText("This is the original text.");
// টেক্সট পরিবর্তন করা
run.setText("This is the modified text.");
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("modified_text_document.docx")) {
document.write(out);
}
System.out.println("Text in Word document has been modified!");
}
}
এখানে, setText() মেথড ব্যবহার করে পূর্ববর্তী টেক্সট পরিবর্তন করা হয়েছে।
Word ডকুমেন্টে চিত্র যোগ করার পাশাপাশি টেক্সটও একত্রিত করা যায়। এই পদ্ধতিতে, চিত্রের পাশাপাশি টেক্সট যোগ করা হয়।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFPictureData;
import org.apache.poi.util.Units;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class AddImageAndText {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
// টেক্সট যোগ করা
run.setText("This is the text before the image.");
// চিত্র যোগ করা
String imagePath = "image.jpg";
XWPFPictureData pictureData = document.addPictureData(new FileInputStream(imagePath), XWPFDocument.PICTURE_TYPE_JPEG);
run.addPicture(pictureData, XWPFDocument.PICTURE_TYPE_JPEG, imagePath, Units.toEMU(100), Units.toEMU(100)); // চিত্রের সাইজ 100x100 পিক্সেল
// চিত্রের পর টেক্সট যোগ করা
run.addBreak(); // নতুন লাইন
run.setText("This is the text after the image.");
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("image_and_text_document.docx")) {
document.write(out);
}
System.out.println("Word ডকুমেন্টে চিত্র এবং টেক্সট একত্রিত করা হয়েছে!");
}
}
এখানে, চিত্রের আগে এবং পরে টেক্সট যোগ করার মাধ্যমে একত্রিত করা হয়েছে।
XWPFDocument ব্যবহার করে Word ডকুমেন্টে টেক্সট ম্যানিপুলেশন করা সহজ। আপনি টেক্সট যোগ করা, ফরম্যাটিং, প্যারাগ্রাফে টেক্সট ইনসার্ট করা, টেক্সট পরিবর্তন বা মুছে ফেলা, এবং চিত্রসহ টেক্সট যোগ করা
Apache POI লাইব্রেরি ব্যবহার করে আপনি Word ডকুমেন্টে টেক্সট যোগ করতে এবং পরিবর্তন করতে পারেন। XWPFDocument ক্লাসের সাহায্যে আপনি সহজেই টেক্সট ইনসার্ট করতে পারবেন, এবং XWPFRun ক্লাসের মাধ্যমে টেক্সটের ফরম্যাটিং পরিবর্তন করতে পারবেন।
এখানে আমরা দেখবো কিভাবে একটি Word ডকুমেন্টে টেক্সট যোগ করা এবং সেই টেক্সট পরিবর্তন করা যায়।
টেক্সট যোগ করার জন্য আপনাকে XWPFDocument ক্লাস ব্যবহার করতে হবে। আপনি createParagraph() এবং createRun() মেথডের মাধ্যমে প্যারাগ্রাফ এবং রান তৈরি করে সেখানে টেক্সট ইনসার্ট করতে পারবেন।
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 AddTextToWordDocument {
public static void main(String[] args) throws IOException {
// নতুন Word ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// প্যারাগ্রাফে টেক্সট যোগ করা
XWPFRun run = paragraph.createRun();
run.setText("এই ডকুমেন্টটি Apache POI ব্যবহার করে তৈরি করা হয়েছে!");
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("word_with_text.docx")) {
document.write(out);
}
System.out.println("Word ডকুমেন্টে টেক্সট সফলভাবে যোগ করা হয়েছে!");
}
}
এই কোডটির মাধ্যমে একটি Word ডকুমেন্ট তৈরি হবে এবং সেখানে টেক্সট যোগ করা হবে: "এই ডকুমেন্টটি Apache POI ব্যবহার করে তৈরি করা হয়েছে!"
যদি আপনি একটি বিদ্যমান Word ডকুমেন্টে টেক্সট পরিবর্তন করতে চান, তাহলে আপনাকে প্রথমে সেই ডকুমেন্টটি লোড করতে হবে এবং তারপরে প্যারাগ্রাফ বা রানগুলির মধ্যে টেক্সট পরিবর্তন করতে হবে।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ModifyTextInWordDocument {
public static void main(String[] args) throws IOException {
// বিদ্যমান Word ডকুমেন্ট লোড করা
FileInputStream fis = new FileInputStream("word_with_text.docx");
XWPFDocument document = new XWPFDocument(fis);
// প্রথম প্যারাগ্রাফ নির্বাচন করা
XWPFParagraph paragraph = document.getParagraphs().get(0);
// প্রথম রান নির্বাচন করা
XWPFRun run = paragraph.getRuns().get(0);
// টেক্সট পরিবর্তন করা
run.setText("এই টেক্সটটি পরিবর্তন করা হয়েছে!");
// পরিবর্তিত ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("modified_word_document.docx")) {
document.write(out);
}
fis.close();
System.out.println("Word ডকুমেন্টের টেক্সট সফলভাবে পরিবর্তন করা হয়েছে!");
}
}
এই কোডটির মাধ্যমে, word_with_text.docx নামক ডকুমেন্টের প্রথম প্যারাগ্রাফের টেক্সট পরিবর্তন হবে এবং সেটি modified_word_document.docx নামে সেভ হবে।
আপনি টেক্সটের ফন্ট স্টাইল, সাইজ এবং অন্যান্য বৈশিষ্ট্য পরিবর্তন করতে পারেন XWPFRun এর মাধ্যমে। উদাহরণস্বরূপ, টেক্সটকে বোল্ড, ইটালিক বা আন্ডারলাইন করা এবং ফন্ট সাইজ পরিবর্তন করা।
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 FormatTextInWordDocument {
public static void main(String[] args) throws IOException {
// নতুন Word ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// রান তৈরি এবং টেক্সট যোগ করা
XWPFRun run = paragraph.createRun();
run.setText("এই টেক্সটটি ফরম্যাট করা হয়েছে!");
run.setBold(true); // বোল্ড
run.setItalic(true); // ইটালিক
run.setFontSize(16); // ফন্ট সাইজ ১৬
run.setFontFamily("Arial"); // ফন্ট ফ্যামিলি
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("formatted_text.docx")) {
document.write(out);
}
System.out.println("ফরম্যাট করা টেক্সট Word ডকুমেন্টে সফলভাবে যোগ করা হয়েছে!");
}
}
এই কোডটি চালানোর পর একটি Word ডকুমেন্ট তৈরি হবে যেখানে টেক্সট বোল্ড, ইটালিক এবং ফন্ট সাইজ ১৬ পয়েন্ট হবে।
Apache POI এর XWPFDocument ক্লাস ব্যবহার করে আপনি Word ডকুমেন্টে সহজেই টেক্সট যোগ এবং পরিবর্তন করতে পারেন। XWPFRun ক্লাসের মাধ্যমে টেক্সটের ফরম্যাটিং পরিবর্তন, যেমন ফন্ট সাইজ, স্টাইল (বোল্ড, ইটালিক), এবং ফন্ট ফ্যামিলি কাস্টমাইজ করা যায়। এটি আপনাকে Word ডকুমেন্টের উপর প্রোগ্রামেটিকভাবে পূর্ণ নিয়ন্ত্রণ প্রদান করে।
Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টে multiline text এবং special characters যোগ করা সম্ভব। এই দুটি বিষয় প্রাসঙ্গিক কারণ Word ডকুমেন্টে একাধিক লাইন বা প্যারাগ্রাফের টেক্সট এবং বিশেষ ক্যারেক্টার (যেমন, অ্যাকসেন্ট সহ চরিত্র, সিম্বল, এবং Unicode ক্যারেক্টার) অনেক সময় প্রয়োজন হয়। এই বিষয়গুলো সঠিকভাবে হ্যান্ডল করার জন্য Apache POI বেশ শক্তিশালী একটি টুল।
নিচে multiline text এবং special characters যোগ করার উপায় নিয়ে আলোচনা করা হবে।
Multiline text মানে একাধিক লাইন বিশিষ্ট টেক্সট যা একটি প্যারাগ্রাফের মধ্যে থাকে। POI ব্যবহার করে আপনি সহজেই একাধিক লাইন যোগ করতে পারেন, যেহেতু একটি XWPFParagraph একটি প্যারাগ্রাফকে নির্দেশ করে এবং একাধিক XWPFRun একাধিক লাইন হিসেবে কাজ করতে পারে।
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 MultilineTextExample {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// প্রথম লাইন যোগ করা
XWPFRun run1 = paragraph.createRun();
run1.setText("This is the first line of multiline text.");
// নতুন লাইন তৈরি করা
XWPFRun run2 = paragraph.createRun();
run2.setText("\nThis is the second line, after a line break.");
// তৃতীয় লাইন যোগ করা
XWPFRun run3 = paragraph.createRun();
run3.setText("\nThis is the third line.");
// ডকুমেন্ট সংরক্ষণ
try (FileOutputStream out = new FileOutputStream("MultilineTextDocument.docx")) {
document.write(out);
}
System.out.println("Multiline text সফলভাবে যোগ করা হয়েছে!");
}
}
এই কোডটি একটি ডকুমেন্টে তিনটি লাইন যুক্ত করবে, যেখানে দ্বিতীয় এবং তৃতীয় লাইন \n ব্যবহার করে নতুন লাইন হিসেবে যোগ করা হয়েছে।
Special characters বা Unicode characters (যেমন, α, β, ©, ®, €, etc.) Word ডকুমেন্টে সঠিকভাবে প্রক্রিয়াকরণ এবং প্রদর্শন করতে হলে সেগুলিকে Unicode হিসেবে হ্যান্ডল করতে হবে। Apache POI এই ধরনের ক্যারেক্টারগুলো সঠিকভাবে প্রসেস করে, যাতে তারা Word ডকুমেন্টে সঠিকভাবে প্রদর্শিত হয়।
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 SpecialCharactersExample {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// Special characters যোগ করা
XWPFRun run = paragraph.createRun();
run.setText("Here are some special characters: α, β, ©, ®, €, and ♥");
// ডকুমেন্ট সংরক্ষণ
try (FileOutputStream out = new FileOutputStream("SpecialCharactersDocument.docx")) {
document.write(out);
}
System.out.println("Special characters সফলভাবে যোগ করা হয়েছে!");
}
}
এই কোডটি একটি ডকুমেন্টে বেশ কিছু বিশেষ ক্যারেক্টার সংযোজন করবে এবং তা সঠিকভাবে Word ডকুমেন্টে প্রদর্শিত হবে।
আপনি multiline text এবং special characters একসাথে ব্যবহার করতে পারেন। এই ধরনের টেক্সট ডকুমেন্টে আপনি একাধিক লাইন যোগ করার পাশাপাশি, প্রতি লাইনে বিশেষ ক্যারেক্টার ব্যবহার করতে পারবেন।
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 MultilineAndSpecialCharacters {
public static void main(String[] args) throws IOException {
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
// প্রথম লাইন যোগ করা
XWPFRun run1 = paragraph.createRun();
run1.setText("This is the first line with a special character: α");
// নতুন লাইন তৈরি করা
XWPFRun run2 = paragraph.createRun();
run2.setText("\nThis is the second line, with special characters: ©, ®, €");
// তৃতীয় লাইন যোগ করা
XWPFRun run3 = paragraph.createRun();
run3.setText("\nThis is the third line with more characters: ♥, β");
// ডকুমেন্ট সংরক্ষণ
try (FileOutputStream out = new FileOutputStream("MultilineAndSpecialChars.docx")) {
document.write(out);
}
System.out.println("Multiline and special characters successfully added!");
}
}
এই কোডটি একটি Word ডকুমেন্টে multiline text এবং special characters একত্রে যোগ করবে।
Apache POI লাইব্রেরি ব্যবহার করে আপনি multiline text এবং special characters Word ডকুমেন্টে সঠিকভাবে হ্যান্ডল করতে পারেন। আপনি \n ব্যবহার করে multiline text যোগ করতে পারবেন, আর Unicode characters সরাসরি XWPFRun ব্যবহার করে সঠিকভাবে Word ডকুমেন্টে প্রবেশ করাতে পারবেন। এই সমস্ত কাস্টমাইজেশন Word ডকুমেন্টে প্রয়োজনীয় টেক্সট এবং বিশেষ ক্যারেক্টার সহজেই ম্যানিপুলেট করার সুবিধা দেয়। POI-এর এই ফিচারগুলি আপনাকে উন্নত ডকুমেন্ট জেনারেশন এবং কাস্টমাইজেশন সক্ষমতা প্রদান করে।
অ্যাপাচি পিওআই (Apache POI) ব্যবহার করে Word ডকুমেন্ট থেকে টেক্সট এক্সট্র্যাকশন (Text Extraction) এবং টেক্সট প্রতিস্থাপন (Text Replacement) দুটি খুবই গুরুত্বপূর্ণ কার্যাবলী। এই কার্যাবলীর মাধ্যমে আপনি .docx ফাইল থেকে টেক্সট পড়তে বা পরিবর্তন করতে পারবেন। Apache POI এর XWPF API এর মাধ্যমে এই কাজগুলো সঞ্চালন করা সম্ভব।
Text Extraction এর মাধ্যমে আপনি Word ডকুমেন্ট থেকে নির্দিষ্ট প্যারাগ্রাফ বা টেক্সট বের করে আনতে পারেন। এটি বিশেষভাবে প্রয়োজনীয় যখন আপনি ডকুমেন্টের কোনো তথ্য বিশ্লেষণ বা প্রক্রিয়া করতে চান।
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
public class ExtractTextFromWord {
public static void main(String[] args) throws IOException {
// Word ডকুমেন্ট লোড করা
FileInputStream file = new FileInputStream(new File("example_word_document.docx"));
XWPFDocument document = new XWPFDocument(file);
// সমস্ত প্যারাগ্রাফ থেকে টেক্সট বের করা
for (XWPFParagraph paragraph : document.getParagraphs()) {
System.out.println(paragraph.getText());
}
// ডকুমেন্ট বন্ধ করা
file.close();
}
}
XWPFDocument
ক্লাস ব্যবহার করে .docx ডকুমেন্টটি লোড করা হয়।getParagraphs()
মেথড ব্যবহার করে সমস্ত প্যারাগ্রাফ থেকে টেক্সট পাওয়া যায়। প্রতিটি প্যারাগ্রাফের টেক্সট getText()
মেথডের মাধ্যমে এক্সট্র্যাক্ট করা হয়।এছাড়াও, আপনি টেবিলের মধ্যে থাকা টেক্সটও এক্সট্র্যাক্ট করতে পারেন একই পদ্ধতিতে।
Text Replacement এর মাধ্যমে আপনি ডকুমেন্টের মধ্যে একটি নির্দিষ্ট টেক্সট পরিবর্তন করতে পারেন। এটি তখন ব্যবহারযোগ্য যখন আপনাকে কোনো টেক্সট ফাইলের মধ্যে বিশেষ শব্দ বা বাক্য পরিবর্তন করতে হয়।
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
public class ReplaceTextInWord {
public static void main(String[] args) throws IOException {
// Word ডকুমেন্ট লোড করা
FileInputStream file = new FileInputStream(new File("example_word_document.docx"));
XWPFDocument document = new XWPFDocument(file);
// ডকুমেন্টের সকল প্যারাগ্রাফ থেকে টেক্সট পরিবর্তন করা
for (XWPFParagraph paragraph : document.getParagraphs()) {
String paragraphText = paragraph.getText();
if (paragraphText.contains("old text")) {
// পুরনো টেক্সট "old text" নতুন টেক্সট "new text" দিয়ে প্রতিস্থাপন করা
paragraphText = paragraphText.replace("old text", "new text");
// নতুন টেক্সট সেট করা
XWPFRun run = paragraph.createRun();
run.setText(paragraphText);
}
}
// ডকুমেন্ট সংরক্ষণ করা
try (FileOutputStream out = new FileOutputStream("updated_word_document.docx")) {
document.write(out);
}
// ডকুমেন্ট বন্ধ করা
file.close();
System.out.println("টেক্সট সফলভাবে প্রতিস্থাপিত হয়েছে!");
}
}
XWPFDocument
ক্লাস ব্যবহার করে ডকুমেন্টটি লোড করা হয়।getText()
মেথডের মাধ্যমে প্যারাগ্রাফের টেক্সট নেওয়া হয়। তারপর, replace()
মেথড ব্যবহার করে পুরনো টেক্সট নতুন টেক্সটে প্রতিস্থাপন করা হয়।Apache POI এর XWPF API ব্যবহার করে আপনি সহজেই Word ডকুমেন্ট থেকে টেক্সট এক্সট্র্যাক্ট করতে পারেন এবং টেক্সট প্রতিস্থাপন করতে পারেন। Text Extraction এর মাধ্যমে আপনি ডকুমেন্টের সমস্ত টেক্সট পড়তে পারেন, এবং Text Replacement এর মাধ্যমে আপনি নির্দিষ্ট টেক্সট পরিবর্তন করতে পারবেন। এই প্রক্রিয়াগুলি ডকুমেন্টের ভেতরের কনটেন্ট পরিবর্তন বা বিশ্লেষণের জন্য খুবই কার্যকর।
Apache POI লাইব্রেরি ব্যবহার করে Microsoft Word ডকুমেন্টে Dynamic Text যোগ করা খুব সহজ। Dynamic Text বলতে এমন টেক্সট বোঝানো হয়, যা চলমান অবস্থায় কোডের মাধ্যমে ডকুমেন্টে অন্তর্ভুক্ত করা হয়, যেমন ডাটাবেস থেকে প্রাপ্ত তথ্য, ব্যবহারকারীর ইনপুট, বা অন্য কোনো প্রোগ্রামিং যুক্তি অনুসারে পরিবর্তনশীল টেক্সট।
এখানে .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.*;
public class DynamicTextExample {
public static void main(String[] args) {
try {
// নতুন ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// নতুন প্যারাগ্রাফ তৈরি
XWPFParagraph paragraph = document.createParagraph();
// নতুন রুন তৈরি
XWPFRun run = paragraph.createRun();
// Dynamic Text যোগ করা
String dynamicText = "এই টেক্সটটি ডাইনামিকভাবে যোগ করা হয়েছে: " + System.currentTimeMillis();
run.setText(dynamicText);
// ডকুমেন্ট সেভ করা
try (FileOutputStream fos = new FileOutputStream("DynamicTextExample.docx")) {
document.write(fos);
}
System.out.println("ডাইনামিক টেক্সট সফলভাবে ডকুমেন্টে যোগ করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
ধরা যাক, আমরা একটি ডাটাবেস থেকে ডাইনামিক তথ্য নিয়ে Word ডকুমেন্টে যোগ করতে চাই। নিচে একটি উদাহরণ দেওয়া হলো যেখানে ডাটাবেস থেকে একটি নাম নিয়ে তা ডকুমেন্টে যোগ করা হচ্ছে:
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.*;
import java.sql.*;
public class DatabaseDynamicTextExample {
public static void main(String[] args) {
try {
// ডাটাবেস সংযোগ
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT username FROM users WHERE user_id = 1");
String userName = "";
if (rs.next()) {
userName = rs.getString("username");
}
// নতুন ডকুমেন্ট তৈরি
XWPFDocument document = new XWPFDocument();
// নতুন প্যারাগ্রাফ তৈরি
XWPFParagraph paragraph = document.createParagraph();
// নতুন রুন তৈরি
XWPFRun run = paragraph.createRun();
// ডাটাবেস থেকে ডাইনামিক টেক্সট যোগ করা
String dynamicText = "স্বাগতম " + userName + ", আপনি আমাদের সিস্টেমে সফলভাবে লগইন করেছেন!";
run.setText(dynamicText);
// ডকুমেন্ট সেভ করা
try (FileOutputStream fos = new FileOutputStream("UserWelcome.docx")) {
document.write(fos);
}
System.out.println("ডাইনামিক টেক্সট সফলভাবে ডকুমেন্টে যোগ করা হয়েছে!");
} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
}
run.setBold(true)
, run.setItalic(true)
, run.setUnderline(true)
ইত্যাদি ব্যবহার করতে পারেন। এছাড়াও, ফন্ট সাইজ, ফন্ট কালার ইত্যাদি পরিবর্তন করা সম্ভব।Apache POI ব্যবহার করে Microsoft Word ডকুমেন্টে Dynamic Text যোগ করা খুবই সহজ এবং কার্যকরী। এটি কেবল স্ট্যাটিক টেক্সট নয়, বরং পরিবর্তনশীল বা চলমান তথ্যকে ডকুমেন্টে অন্তর্ভুক্ত করতে সক্ষম, যেমন ডাটাবেস থেকে প্রাপ্ত তথ্য, ব্যবহারকারীর ইনপুট বা সিস্টেমের বর্তমান সময়। XWPF ক্লাসের মাধ্যমে আপনি অত্যন্ত নমনীয়ভাবে এই কাজটি করতে পারেন, এবং প্রয়োজন অনুযায়ী টেক্সট ফরম্যাটিং, টেবিল, গ্রাফিক্স সহ আরও অনেক কিছু যোগ করতে পারবেন।
common.read_more