مهدی عادلی فر
بنیانگذار توسینسو و برنامه نویس

آموزش خواندن فایل اکسل در جاوا به زبان بسیار ساده

چگونه از فایل اکسل در جاوا استفاده کنیم ؟ معمولا همه ما از برنامه های آفیس استفاده کرده ایم و همه می دانند که این برنامه ها در محیط های اداری و حرفه ای نقش بسیار پررنگی را دارند. یکی از این برنامه های کاربردی برنامه اکسل می باشد. یک برنامه صفحه گسترده که می توان به کمک آن انواع اطلاعات آماری و لیستی را نگهداری نمود. به خاطر اهمیت بسیار زیاد این فایل ها یکی از نیاز هایی که ممکن است .

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

در دوره آموزش جاوا ( آموزش برنامه نویسی جاوا ) این موارد بصورت رایگان آموزش داده شده است

برای کاربران پیش بیاید این است که اطلاعات موجود در فایل های این برنامه در داخل دیتابیس ذخیره شوند و همچنین بتوان با استفاده از برنامه سازمانی فایل های اکسل متنوعی را تولید نمود. در این آموزش نحوه خواندن فایل های اکس توسط زبان جاوا را توضیح می دهیم.

برای این کار لازم است که آشنایی ابتدایی با زبان جاوا داشته باشید. برای این کار از کتابخانه apache poi-ooxml استفاده می کنیم. اگر شما برای مدیریت وابستگی های پروژه خود از maven استفاده می کنید می توانید برای اضافه شدن این کتابخانه به پروژه شما می توانید سطرهای زیر را داخل فایل pom.xml پروژه خود اضافه کنید و پروژه خود را بیلد کنید.

<!— https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml —>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.9</version>
</dependency>

این کتابخانه مفاهیمی در خود از جمله workbook , sheet, row , cell را در خود دارد که می توان به همه اجزای یک فایل اکسل دسترسی داشت. بعد از این که کتابخانه مورد نظر را به پروژه خود اضافه کردید شروع به نوشتن برنامه می کنیم. برای خواندن فایل اکس ابتدا باید یک XSSWorkBook از فایل مورد نظر بسازیم.

این کار باعث می‌شود که یک workbook ساخته شود که می‌توان به شیت های مختلف اکسل دسترسی داشته باشیم. نحوه ساخت workbook به شکل زیر می‌باشد. دقت کنید که ورودی constructor مربوط به workbook‌ از نوع fileInputStream می‌باشد.

FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
            Workbook workbook = new XSSFWorkbook(excelFile);

برای اینکه به یک شیت از فایل اکسل مورد نظر دسترسی داشته باشیم می‌توانیم آن شیت را با استفاده از متد getSheet و اندیس آن شیت پیدا کنیم. مانند کد زیر

 Sheet datatypeSheet = workbook.getSheetAt(0);

حال می‌توانیم فایل اکسل را سطر به سطر خوانده و پردازش کنیم. برای این کار می‌توان از iteratorها استفاده کرد. دقت داشته باشید که هر سطر هم تعدادی سلول دارد که می‌توان به مقدار های آن‌ها با استفاده از iterator ها دسترسی داشت. برای مثال در برنامه زیر یک فایل اکسل خوانده شده و مقادیر سلول‌های آن در خروجی چاپ می‌شود.

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

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Iterator;

public class ApachePOIExcelRead {

    private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";

    public static void main(String[] args) {

        try {

            FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
            Workbook workbook = new XSSFWorkbook(excelFile);
            Sheet datatypeSheet = workbook.getSheetAt(0);
            Iterator<Row> iterator = datatypeSheet.iterator();

            while (iterator.hasNext()) {

                Row currentRow = iterator.next();
                Iterator<Cell> cellIterator = currentRow.iterator();

                while (cellIterator.hasNext()) {

                    Cell currentCell = cellIterator.next();

                    if (currentCell.getCellTypeEnum() == CellType.STRING) {
                        System.out.print(currentCell.getStringCellValue() + "--");
                    } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
                        System.out.print(currentCell.getNumericCellValue() + "--");
                    }

                }
                System.out.println();

            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

دقت داشته باشید که در کد بالا اگر از کتابخانه‌های poi-ooxml با ورژن بالاتر استفاده می‌کنید getCellTypeEnum وجود ندارد و getCellType جایگزین آن شده است.


مهدی عادلی فر
مهدی عادلی فر

بنیانگذار توسینسو و برنامه نویس

مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.

نظرات