منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI

اذهب الى الأسفل

تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI  Empty تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI

مُساهمة من طرف أحمد مناع الجمعة نوفمبر 29, 2013 9:55 am

بسم الله الرحمن الرحيم 
أهلا وسهلا بكم إخوانى الكرام ....منذ فترة كنت قد كتبت مقال عن [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] وأخبرنا بإن تلك المكتبة تمكنك فقط من قراءة مصنفات الاكسل  الاصدار 95, 97, 2000, 2003 و التى عادة تكون بإمتداد XLS ...درس اليوم هو عن كيفية قراءة ملفات الاكسل إصدار XLS بالاضافة الى إصدار XLSX و التى تبدأ من الاصدرا 2007 فما فوق وذلك من خلال المكتبة Apache POI library و ذلك من خلال الخطوات البيسطة التالية :

1_ قم بتحميل المكتبة Apache POI library v3.8 أو أى إصدار أعلى من هنـــــــــــــــــــــــــــا

2_قم بفك الضغط ثم قم بنسخ الملف poi-3.10-beta2-20130904 الى مجلد مشروعك classpath

3_ كتابة الشفرات البرمجية

أولا : قراءة ملفات XLS بإستخدام Apache POI وهى ملفات الاكسل إصدار Office 97 -2003

_نفترض أن لدينا المصنف اكسل بإسم Read_Excel_Example.xls و يحتوى على ورقة عمل بإسم SHEET1 ويحتوى على بعض البيانات كما فى الشكل التالى :

تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI  Input

_ فى البداية نقوم بإستيراد مكتبات العمل التالية :
الكود:
import java.io.FileInputStream;
import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.usermodel.*;
import java.util.Iterator;
_ فى الدالة الرئيسية للتطبيق نقوم بإنشاء مثيل جديد من FileInputStream و إسناد أسم و مسار مصنف الاكسل المراد القراءة منه الى الكائن الجديد على النحو التالى :
الكود:
 FileInputStream input_document = new FileInputStream(new File("C:\\Read_Excel_Example.xls"));
_ نقوم إنشاء مثيل جديد من HSSFWorkbook _وهو الكائن الذى سيقوم بقراءة مصنف الاكسل_ ثم إسناد إلية مصنف الاكسل المراد قرائه على النحجو التالى :
الكود:
 HSSFWorkbook my_xls_workbook = new HSSFWorkbook(input_document);
_نقوم بالاعلان عن الكائن HSSFSheet و الذى سيقوم بقرائة ورقة العمل sheet وذلك على النحو التالى :
الكود:
  HSSFSheet my_worksheet = my_xls_workbook.getSheetAt(0);
_نقوم بالحصول على قيم الصفوف و الاععمدة فى ورقة العمل الحالية من خلال حلقتان تكرريتان على النحو التالى :

الكود:
  Iterator<Row> rowIterator = my_worksheet.iterator();
                while(rowIterator.hasNext()) {
                        Row row = rowIterator.next();      
                        Iterator<Cell> cellIterator = row.cellIterator();
                                while(cellIterator.hasNext()) {
                                        Cell cell = cellIterator.next();
                                        switch(cell.getCellType()) {
                                        case Cell.CELL_TYPE_NUMERIC:
                                                System.out.print(cell.getNumericCellValue() + "\t\t");
                                                break;
                                        case Cell.CELL_TYPE_STRING:
                                                System.out.print(cell.getStringCellValue() + "\t\t");
                                                break;
                                        }
                                }
                System.out.println("");
                }
                input_document.close();
ويمكنك ملاحظة على الكود أعلاه ما يلى :


الكود:
Iterator<Row> rowIterator = my_worksheet.iterator();
                while(rowIterator.hasNext()) {
                        Row row = rowIterator.next();      
  
تكرار لقراءة كل صفوف ورقة العمل الحالية

_أما الشفرة
الكود:
 Iterator<Cell> cellIterator = row.cellIterator();
                                while(cellIterator.hasNext()) {
                                        Cell cell = cellIterator.next()
تكرار أخر لقراءة كل أعمدة ورقة العمل الحالية

_ ثم أستخدمنا جملة switch للحصول عن نوع بيانات الخلية بحيث يتم طباعة الخلايا التى تحتوى على بيانات رقمية التى تحتوى على بيانات نصية كلا على حده

و الشفرة الكاملة لقراءة مصنف أكسل إصدار Office 97 -2003  بإستخدام المكتبة Apache POI على النحو التالى :

الكود:



import java.io.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.usermodel.*;
import java.util.Iterator;
public class readxls {  
        public static void main(String[] args) throws Exception{
                FileInputStream input_document = new FileInputStream(new File("C:\\Read_Excel_Example.xls"));
                HSSFWorkbook my_xls_workbook = new HSSFWorkbook(input_document);
                HSSFSheet my_worksheet = my_xls_workbook.getSheetAt(0);
                Iterator<Row> rowIterator = my_worksheet.iterator();
                while(rowIterator.hasNext()) {
                        Row row = rowIterator.next();      
                        Iterator<Cell> cellIterator = row.cellIterator();
                                while(cellIterator.hasNext()) {
                                        Cell cell = cellIterator.next();
                                        switch(cell.getCellType()) {
                                        case Cell.CELL_TYPE_NUMERIC:
                                                System.out.print(cell.getNumericCellValue() + "\t\t");
                                                break;
                                        case Cell.CELL_TYPE_STRING:
                                                System.out.print(cell.getStringCellValue() + "\t\t");
                                                break;
                                        }
                                }
                System.out.println("");
                }
                input_document.close();
        }
}
و النتيجة  كما فى الصورة التالية :

Student ID Subject Score
101.0 English 67.0
101.0 Science 87.0
102.0 English 69.0
102.0 Science 75.0
103.0 English 37.0
103.0 Maths 90.0
لنا متابعة فى الجزء الثانى من الدرس

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI  Empty رد: تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI

مُساهمة من طرف أحمد مناع الجمعة نوفمبر 29, 2013 12:06 pm

بسم الله الرحمن الرحيم
ثانيا : قراءة ملفات  XLSX بإستخدام  Apache POI وهى ملفات الاكسل إصدار 2007

ملفات XLSX تختلف في الشكل بالمقارنة مع ملفات XLS، وبالتالي تحتاج إلى استخدام أو استيراد بعض المكتبات الجديدة من المكتبة Apache POI لقراءة بيانات تلك الملفات .وبالتالى سنقوم بإستيراد المكتبات الجديدة على النحو التالى :

الكود:
import java.io.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.ss.usermodel.*;
import java.util.Iterator;
و يمكنك ملاحظة أننا قمنا بإستيراد المكتبات الجديدة للازمة لقراءة ملفات XLSX وهى :
الكود:
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
و بالتالى فإن الشفرة الكاملة ستكون على النحو التالى :

الكود:

import java.io.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.ss.usermodel.*;
import java.util.Iterator;

public class readxlsx {  
        public static void main(String[] args) throws Exception{
                FileInputStream input_document = new FileInputStream(new File("C:\\Read_Excel_Example.xlsx"));
                XSSFWorkbook my_xlsx_workbook = new XSSFWorkbook(input_document);  
                XSSFSheet my_worksheet = my_xlsx_workbook.getSheetAt(0);
                Iterator<Row> rowIterator = my_worksheet.iterator();
                while(rowIterator.hasNext()) {
                        Row row = rowIterator.next();    
                        Iterator<Cell> cellIterator = row.cellIterator();
                                while(cellIterator.hasNext()) {
                                        Cell cell = cellIterator.next();
                                        switch(cell.getCellType()) {
                                        case Cell.CELL_TYPE_NUMERIC:
                                                System.out.print(cell.getNumericCellValue() + "\t\t"); //print numeric value
                                                break;
                                        case Cell.CELL_TYPE_STRING:
                                                System.out.print(cell.getStringCellValue() + "\t\t"); //print string value
                                                break;
                                        }
                                }
                System.out.println("");
                }
                input_document.close();
        }
}
وهو نفس الكود تقريبا الذى تم أستخدامه فى الجزء الاول من الدرس

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم
أحمد مناع
أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 1108
النقاط : 202034
التقيم : 144
الدولة : مصر
الجنس : ذكر

https://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI  Empty رد: تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI

مُساهمة من طرف زهراء الأربعاء نوفمبر 12, 2014 5:04 pm

مقال فى منهى الروعة و الابداع فى الطرح بارك الله فيك
زهراء
زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 438
النقاط : 769
التقيم : 67
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI  Empty رد: تعلم كيفية قراءة ملفات Excel إصدار XLS & XLSX بإستخدام المكتبة Apache POI

مُساهمة من طرف mergac الثلاثاء مارس 03, 2020 10:40 am

موضوع رائع وشرح اروع ...شكرا شكرا شكرا
.كان بودي ان تتطرق الى كيفية تخزين ملف Excel  في قاعدة بيانات
mergac
mergac
.
.

تاريخ التسجيل : 03/11/2019
المساهمات : 7
النقاط : 8
التقيم : 1
الدولة : الجزائر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى