Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা

Java Technologies - অ্যাপাচি পিওআই (Apache POI) - Excel ফাইল পড়া এবং ডেটা এক্সট্র্যাক্ট করা
156

Apache POI একটি শক্তিশালী Java লাইব্রেরি যা Excel ফাইলের ডেটা পড়া, লেখা এবং ম্যানিপুলেট করতে ব্যবহৃত হয়। Large Excel Files থেকে ডেটা এক্সট্র্যাক্ট করা একটি চ্যালেঞ্জ হতে পারে, বিশেষত যখন ফাইলের আকার অনেক বড় হয় এবং মেমরি কনস্ট্রেইন্ট থাকে। এই সমস্যা মোকাবিলায়, POI লাইব্রেরি দুটি ভিন্ন API প্রদান করে: HSSF (Horrible Spreadsheet Format) এবং XSSF (XML Spreadsheet Format)। XSSF Excel 2007 (.xlsx) ফাইলের জন্য ব্যবহৃত হয়, এবং HSSF পুরোনো Excel 2003 (.xls) ফাইলের জন্য ব্যবহৃত হয়।

বিশেষত বড় ফাইলগুলো থেকে ডেটা এক্সট্র্যাক্ট করতে Streaming API (SXSSF) ব্যবহার করা সবচেয়ে ভালো পদ্ধতি, যেটি মেমরি ব্যবস্থাপনা উন্নত করে এবং বড় Excel ফাইলের জন্য কার্যকরী।

নিচে Apache POI ব্যবহার করে Large Excel Files থেকে ডেটা এক্সট্র্যাক্ট করার জন্য পদক্ষেপগুলো দেওয়া হলো।


১. SXSSF ব্যবহার করে Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা

SXSSF API POI এর একটি উন্নত সংস্করণ, যা XSSF এর মতোই কাজ করে তবে এটি এক্সট্রা মেমরি ব্যবহারের চেয়ে কম করে। এটি বড় Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার জন্য সবচেয়ে উপযুক্ত।

ডিপেন্ডেন্সি যুক্ত করা (Maven)

প্রথমে, আপনাকে SXSSF ব্যবহার করার জন্য poi-ooxml লাইব্রেরির সর্বশেষ ভার্সন pom.xml এ যুক্ত করতে হবে।

<dependencies>
    <!-- Apache POI (for working with Excel files) -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
</dependencies>

২. Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার উদাহরণ

এখন, একটি large Excel file থেকে ডেটা পড়ার উদাহরণ দেওয়া হলো, যেখানে SXSSF ব্যবহার করা হয়েছে।

উদাহরণ: Large Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করা

import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

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

public class LargeExcelExtractor {

    public static void main(String[] args) throws IOException, InvalidFormatException {
        FileInputStream file = new FileInputStream(new File("large_excel_file.xlsx"));
        
        // SXSSFWorkbook (streaming version of XSSFWorkbook) ব্যবহার করা
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        
        // Excel শীট নির্বাচন করা
        XSSFSheet sheet = workbook.getSheetAt(0);

        // শীটের প্রতিটি রো পড়া
        for (Row row : sheet) {
            for (Cell cell : row) {
                // সেল ডেটা প্রিন্ট করা (যেমন String, Numeric, Date ইত্যাদি)
                switch (cell.getCellTypeEnum()) {
                    case STRING:
                        System.out.print(cell.getStringCellValue() + "\t\t");
                        break;
                    case NUMERIC:
                        System.out.print(cell.getNumericCellValue() + "\t\t");
                        break;
                    case BOOLEAN:
                        System.out.print(cell.getBooleanCellValue() + "\t\t");
                        break;
                    default:
                        System.out.print("Unknown Type\t\t");
                        break;
                }
            }
            System.out.println();
        }

        // ফাইল বন্ধ করা
        workbook.close();
        file.close();
    }
}

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

  1. XSSFWorkbook: এটি .xlsx ফাইলের জন্য ব্যবহৃত। SXSSFWorkbook এর মাধ্যমে ডেটা স্ট্রিমিং করতে POI এর উন্নত সংস্করণ ব্যবহৃত হয়।
  2. FileInputStream: Excel ফাইলটি খোলার জন্য ব্যবহার করা হয়।
  3. sheet.getRow(): শীট থেকে রো আনা এবং সেটি পড়া।
  4. cell.getCellTypeEnum(): সেলের ডেটা টাইপ (String, Numeric, Boolean) চেক করে, তারপর সেই অনুযায়ী ডেটা প্রিন্ট করা হয়।

এই কোডটি বড় Excel ফাইল থেকে ডেটা এক্সট্র্যাক্ট করার জন্য উপযুক্ত। মেমরি ব্যবস্থাপনা কৌশল হিসেবে SXSSFWorkbook এর মাধ্যমে স্ট্রিমিং করা হয় যাতে বড় ফাইলগুলো পড়তে গিয়ে মেমরি সমস্যার সম্মুখীন না হন।


৩. Streaming Excel Files with SXSSF

SXSSF ব্যবহার করলে Excel ফাইলকে একবারে পুরোপুরি মেমরিতে লোড না করে ছোট ছোট অংশে লোড করা যায়। এতে করে memory footprint কমে এবং ফাইলের আকার যতো বড় হোক না কেন, আপনি আরও দক্ষতার সাথে কাজ করতে পারবেন।

উদাহরণ: স্ট্রিমিং মোডে Excel ফাইল লেখা

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

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

public class StreamingExcelWriter {

    public static void main(String[] args) throws IOException {
        // SXSSFWorkbook তৈরি (streaming version)
        SXSSFWorkbook workbook = new SXSSFWorkbook();
        Sheet sheet = workbook.createSheet("Example Sheet");

        // ডেটা লিখার জন্য কিছু রো তৈরি করা
        for (int i = 0; i < 100000; i++) {
            Row row = sheet.createRow(i);
            for (int j = 0; j < 10; j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue("Data " + i + "," + j);
            }
        }

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

        // SXSSFWorkbook পরিষ্কার করা (ডাটা ফ্লাশ করা)
        workbook.dispose();
    }
}

এখানে, 100,000 রো এবং 10 কলামসহ ডেটা তৈরি করা হয়েছে এবং এক্সেল ফাইলের মধ্যে সংরক্ষণ করা হয়েছে। SXSSFWorkbook ব্যবহার করা হয়েছে যাতে মেমরি ব্যবস্থাপনা আরও দক্ষ হয়।


৪. Performance Tips for Large Excel File Processing

  • SXSSF ব্যবহার করুন: মেমরি ব্যবস্থাপনা উন্নত করতে বড় ফাইল থেকে ডেটা পড়ার সময় SXSSF ব্যবহার করুন।
  • FileInputStream ব্যবহার করুন: ফাইলটি মেমরিতে একবারে লোড না করে স্ট্রিমিংয়ের মাধ্যমে পড়ুন।
  • Temporary Files: বড় ফাইল প্রক্রিয়া করার সময়ে আপনি temporary files ব্যবহার করতে পারেন, যেগুলি প্রক্রিয়া শেষে ডিলিট করা হয়।
  • Row and Cell Iteration: একে একে রো এবং সেল পড়ুন, একবারে পুরো শীটকে লোড করা থেকে বিরত থাকুন।

সারাংশ

  • Large Excel Files থেকে ডেটা এক্সট্র্যাক্ট করতে Apache POI এর SXSSF API সবচেয়ে উপযুক্ত, যা মেমরি ব্যবস্থাপনা উন্নত করে এবং বড় ফাইলের প্রক্রিয়া দ্রুত করে।
  • SXSSF ব্যবহার করে, আপনি একে একে ছোট ছোট অংশে ডেটা এক্সট্র্যাক্ট করতে পারবেন, যাতে মেমরি অধিক ব্যবহার না হয় এবং আপনি বড় Excel ফাইলেও দক্ষতার সাথে কাজ করতে পারবেন।
  • FileInputStream এবং SXSSFWorkbook ক্লাসগুলো ব্যবহার করে streaming মোডে Excel ফাইল থেকে ডেটা পড়তে ও লিখতে পারবেন।
Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...