التعامل مع مصنفات الاكسل فى #C ... درس (2):قراءة مصنف أكسل

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

التعامل مع مصنفات الاكسل فى #C ... درس (2):قراءة مصنف أكسل Empty التعامل مع مصنفات الاكسل فى #C ... درس (2):قراءة مصنف أكسل

مُساهمة من طرف أحمد مناع في السبت ديسمبر 21, 2013 1:16 pm

بسم الله الرحمن الرحيم

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

1_ فى البداية يجب أدراج المكتبة Excel object Library الى المشروع و ذلك من خلال تحديد ايقونة المشروع فى نافذة Solution Explorer ثم النقر يمين و من القائمة التى ستظهر قم باختيار الامر Add Reference

التعامل مع مصنفات الاكسل فى #C ... درس (2):قراءة مصنف أكسل Add-Reference-1

_ سيظهر لك مربع حوارى من خلال التويب com أختر المكتبة Microsoft Excel Object Library

التعامل مع مصنفات الاكسل فى #C ... درس (2):قراءة مصنف أكسل Add-Reference-2

2_ تحتاج إلى إضافة المرجع في شفرة المشروع من أجل استخدام كافة الأسالييب المكتبة Microsoft Excel Object Library  و يتم ذلك على النحو التالى:
الكود:
using Excel = Microsoft.Office.Interop.Excel;

3_ إنشاء مثيل لكائن تطبيق Excel  وذلك بأستخدام الشفرة التالية :

الكود:
 Excel.Application oXL = new Excel.Application();

4_ الاعلان عن كائنات العمل التى سيتم إستخدامها على النحو التالى :

الكود:
Excel.Workbook oWB;
            Excel.Worksheet oSheet;

5_ نقوم بفتح مصنف الاكسل على النحو التالى :

الكود:
String inputFile = @"D:\Excel\Input.xlsx";
             oWB = oXL.Workbooks.Open(inputFile);

حيث أن :

_ السطر الاول تم الاعلان عن متغير نصى و إسناد اسم و مسار مصنف الاكسل المراد فتحته و القراءة منه .
_ السطر الثانى تم تمرير المتغير النصى الى الاسلوب Open لتتم عملية الفتح .

6_تحديد ورقة العمل sheet المراد القراءه منها على النحو التالى :
الكود:
 oSheet = oWB.Sheets[1];
             oSheet = oWB.ActiveSheet;

حيث أن :

_ الرقم 1 يشير الى فهرس ورقة العمل المراد القراءة منها و التى تعنى "روقة العمل الاولى فى المصنف "
_ عند تحديد ورقة العمل قد لا تكون هذه الورقة هى المفتوحة لذلك استخدمنا الاسلوب ActiveSheet

كما يمكنك استخدام الكود فى شكل اخر فى حالة عدم القدرة على رقم ورقة العمل و ذلك من خلال استخدام أسم ورقة العمل بدلا من فهرسها على النحو التالى :
الكود:
oSheet = oWB.Sheets["SheetName"];
             oSheet = oWB.ActiveSheet;

7_لبدء عملية القراءة يجب تحديد نطاق عناوين من الخلايا و قراءة القيم من هذا النطاق ...في مثالنا، ونحن بحاجة لقراءة الخلايا من A2 إلى A11 ....فيتم على النحو التالى :

الكود:
String start_range = "A2";
    String end_range = "A11";
 
    Object[,] values = oSheet.get_Range(start_range, end_range).Value2;

و لقراءة العمود الثاني، فقط تغيير العنوان من B2 إلى B11.

الكود:
start_range = "B2";
    end_range = "B11";
 
    Object[,] values = oSheet.get_Range(start_range, end_range).Value2;

_ ومع ذلك يمكنك الوصول إلى جميع البيانات في ورقة العمل باستخدام حلقة تكرارية بسيطة على النحو التالى :

الكود:
int t = values.GetLength(0);
 for (int i = 1; i <= values.GetLength(0); i++)
 {
     String val = values[i, 1].ToString();
 }

8_ أحيانا قد تكون غير متأكدا من معرفة عناوين النطاقات و في مثل هذه الحالات، يمكنك الحصول على عنوان أخر صف و أخر عمود يحتويان على بيانات باستخدام التعليمات البرمجية التالية :

الكود:
Excel.Range last = oSheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
 
int lastRow = last.Row;
 
int lastColumn = last.Column;
 
start_range = "A2";
 
end_range = "A" + Convert.ToString(lastColumn);

10_ أخير أغلاق الكائنات المستخدمة فى العمل

الكود:
oWB.Close(true, misValue, misValue);
             oXL.Quit();

اللى اللقاء فى درس قادم

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

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

http://egy-tech.forumegypt.net

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

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

ََ

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


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