Import Excel File To DataGridView Table By Table Or Sheet By Sheet استيراد بيانات ملف اكسل الى DataGridView


بســـــم الله الرحمن الرحيم
السلام عليكم و رحمة الله و بركاته

توجد العديد من الطرق لكيفية القراءة و الكتابة الى ملفات اكسل و بعضها لا يحتاج الى مكاتب خارجية , هذه المقالة تتحدث عن استخدام مكتبة خارجية بسيطة و مجانية و سهلة الاستخدام.

في البداية تحتاج الى انشاء مشروع جديد يحتوي على فورم واحد فقط , و نضع عليه الادوات التالية

DataGridView - نسميها Dgv
ComboBox1
Button نسميه btnOpen

الان نذهب الى Solution Explorer  و بيمين الماوس نضغط و من القائمة الظاهرة نختار NuGet Packages
و نتابع كما بالصورة





في اعلى الفورم نعرف DataSet ،سميها Result


: Vb.net Code 
   Dim Result As New DataSet 




عد ذلك و في حدث الضغط على الزر لفتح ملفات من النوع Excel

PHP كود :

        بتحميل اسماء الاوراق كجداول الى ComboBox
 Vb.net code
 Result.Clear()
        Dgv.DataSource = Nothing

        Using Ofd As New OpenFileDialog()

            With Ofd
                .Filter = "Excel 2003|*.xls|Excel 2007|*.xlsx"
                .ValidateNames = True
            End With

            If Ofd.ShowDialog = DialogResult.OK Then
                Dim fs As IO.FileStream = IO.File.Open(Ofd.FileName, IO.FileMode.Open, IO.FileAccess.Read)
                Dim Reader As Excel.IExcelDataReader

                If Ofd.FilterIndex = 1 Then
                    Reader = Excel.ExcelReaderFactory.CreateBinaryReader(fs)
                Else
                    Reader = Excel.ExcelReaderFactory.CreateOpenXmlReader(fs)
                End If

                Reader.IsFirstRowAsColumnNames = True
                Result = Reader.AsDataSet()
                ComboBox1.Items.Clear()

                For Each Dt As DataTable In Result.Tables
                    ComboBox1.Items.Add(Dt.TableName)
                    Reader.Close()
                Next

            End If

        End Using 
 
و من ثم اسناد كائن DataGridView الى الجدول المحدد
PHP كود :
   Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dgv.DataSource = Result.Tables(ComboBox1.SelectedIndex)
    End Sub 


اتمنى ان يكون الشرح واضح❤❤❤❤