تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كود استيراد الاصناف من البرنامج الى الاكسيل
#1
السلام عليكم ورحمة الله وبركاته

احتاج مساعدة  اذا ممكن
كود
Vb.net
كيفية حفظ الاصناف من (DataGridView) الى قاعدة بيانات (SQL Server ) .

مثلا عندي اصناف عند العميل وعملت تصدير لها وابغى اعمل استيراد لها في البرنامج
يعني انا عملت كود استيراد الاصناف الى الاكسيل ولكن بعد عرض الاصناف في الداتا جريد فيو كيف احتاج اصدر الاصناف الى الاكسيل واحفظها في قاعدة البيانات sql server لتنزيلها عند عميل اخر 

وشكرا لكم
الرد }}}
تم الشكر بواسطة:
#2
أرجو توفير جميع البيانات
عدد الاعمدة في الاكسل
واسم الجدول والحقول في قاعدة البيانات
وما هي الاعمدة المطلوب جلبها وحفظها
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة:
#3
وعليكم السلام ورحمة الله وبركاته

لحفظ الأصناف من DataGridView إلى قاعدة بيانات SQL Server في VB.NET، يمكنك اتباع الخطوات التالية:

استخراج البيانات من DataGridView:

قم بقراءة كل صف من DataGridView واستخراج البيانات.
الاتصال بقاعدة البيانات:

قم بإنشاء اتصال بقاعدة البيانات باستخدام SqlConnection.
تنفيذ عملية الإدخال:

قم بإعداد أمر SQL لإدخال البيانات في قاعدة البيانات باستخدام SqlCommand.
تكرار العملية لكل صف:

قم بتنفيذ أمر الإدخال لكل صف من DataGridView.
إليك مثال على كيفية تنفيذ هذه الخطوات:



PHP كود :
Imports System.Data.SqlClient

Private Sub SaveDataGridViewToDatabase()
 
   ' نص الاتصال بقاعدة البيانات
    Dim connectionString As String = "Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True"

    ' 
إنشاء الاتصال بقاعدة البيانات
    Using connection 
As New SqlConnection(connectionString)
 
       ' فتح الاتصال
        connection.Open()

        ' 
بدء المعاملة
        Dim transaction 
As SqlTransaction connection.BeginTransaction()

 
       Try
            
' إعداد أمر الإدخال
            Dim insertCommand As New SqlCommand("INSERT INTO YourTableName (Column1, Column2, Column3) VALUES (@Column1, @Column2, @Column3)", connection, transaction)

            ' 
إضافة المعاملات لأمر الإدخال
            insertCommand
.Parameters.Add("@Column1"SqlDbType.VarChar)
 
           insertCommand.Parameters.Add("@Column2"SqlDbType.VarChar)
 
           insertCommand.Parameters.Add("@Column3"SqlDbType.Int)

 
           ' قراءة البيانات من DataGridView
            For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row.IsNewRow Then
                    ' 
تعيين القيم للمعاملات
                    insertCommand
.Parameters("@Column1").Value row.Cells("Column1").Value.ToString()
 
                   insertCommand.Parameters("@Column2").Value row.Cells("Column2").Value.ToString()
 
                   insertCommand.Parameters("@Column3").Value Convert.ToInt32(row.Cells("Column3").Value)

 
                   ' تنفيذ أمر الإدخال
                    insertCommand.ExecuteNonQuery()
                End If
            Next

            ' 
تأكيد المعاملة
            transaction
.Commit()

 
           MessageBox.Show("Data saved successfully!")
 
       Catch ex As Exception
            
' إذا حدث خطأ، التراجع عن المعاملة
            transaction.Rollback()
            MessageBox.Show("An error occurred: " & ex.Message)
        End Try
    End Using
End Sub 

تأكد من تعديل أسماء الأعمدة (Column1, Column2, Column3) وأسماء الجدول (YourTableName) والاتصال (YourServerName, YourDatabaseName) بما يتناسب مع إعداداتك الخاصة.


بهذا الكود، يمكنك استيراد البيانات من Excel إلى DataGridView، ثم حفظها في قاعدة البيانات باستخدام زر يقوم باستدعاء الدالة SaveDataGridViewToDatabase.
الرد }}}
تم الشكر بواسطة:
#4
(14-07-24, 03:38 PM)تركي الحلواني كتب : أرجو توفير جميع البيانات
عدد الاعمدة في الاكسل
واسم الجدول والحقول في قاعدة البيانات
وما هي الاعمدة المطلوب جلبها وحفظها

شكرا لردك السريع ياغالي 

Sql Server 2014 
Visual 2019

عدد الاعمدة في الاكسل:
15 صف الاكسيل عند الاستيراد من الداتا جريد 
 
واسم الجدول والحقول في قاعدة البيانات:
Item_Tbl

Item_ID int
ItemBarcode nvarchar(50) 
ItemNameA nvarchar(250) 
ItemNameE nvarchar(250) 
Cat_ID int 
Unit_ID int 
OpenStock int 
ItemLimit int 
Is_Buy_Tax bit 
Buy_Tax_Value decimal(18, 1) 
BuyPrice_NoTax decimal(18, 2) 
Buy_TaxTotal decimal(18, 2) 
BuyPrice_WithTax decimal(18, 2) 
Is_Sale_Tax bit 
Sale_Tax_Value decimal(18, 1) 
SalePrice_NoTax decimal(18, 2) 
Sale_TaxTotal decimal(18, 2) 
SalePrice_WithTax decimal(18, 2) 
Rbh decimal(18, 2) 
Item_Pic image 
Item_Status bit 
Is_Exp bit 
Is_Quick_Item bit

(14-07-24, 09:03 PM)Kamil كتب : وعليكم السلام ورحمة الله وبركاته

لحفظ الأصناف من DataGridView إلى قاعدة بيانات SQL Server في VB.NET، يمكنك اتباع الخطوات التالية:

استخراج البيانات من DataGridView:

قم بقراءة كل صف من DataGridView واستخراج البيانات.
الاتصال بقاعدة البيانات:

قم بإنشاء اتصال بقاعدة البيانات باستخدام SqlConnection.
تنفيذ عملية الإدخال:

قم بإعداد أمر SQL لإدخال البيانات في قاعدة البيانات باستخدام SqlCommand.
تكرار العملية لكل صف:

قم بتنفيذ أمر الإدخال لكل صف من DataGridView.
إليك مثال على كيفية تنفيذ هذه الخطوات:



PHP كود :
Imports System.Data.SqlClient

Private Sub SaveDataGridViewToDatabase()
 
   ' نص الاتصال بقاعدة البيانات
    Dim connectionString As String = "Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True"

    ' 
إنشاء الاتصال بقاعدة البيانات
    Using connection 
As New SqlConnection(connectionString)
 
       ' فتح الاتصال
        connection.Open()

        ' 
بدء المعاملة
        Dim transaction 
As SqlTransaction connection.BeginTransaction()

 
       Try
            
' إعداد أمر الإدخال
            Dim insertCommand As New SqlCommand("INSERT INTO YourTableName (Column1, Column2, Column3) VALUES (@Column1, @Column2, @Column3)", connection, transaction)

            ' 
إضافة المعاملات لأمر الإدخال
            insertCommand
.Parameters.Add("@Column1"SqlDbType.VarChar)
 
           insertCommand.Parameters.Add("@Column2"SqlDbType.VarChar)
 
           insertCommand.Parameters.Add("@Column3"SqlDbType.Int)

 
           ' قراءة البيانات من DataGridView
            For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row.IsNewRow Then
                    ' 
تعيين القيم للمعاملات
                    insertCommand
.Parameters("@Column1").Value row.Cells("Column1").Value.ToString()
 
                   insertCommand.Parameters("@Column2").Value row.Cells("Column2").Value.ToString()
 
                   insertCommand.Parameters("@Column3").Value Convert.ToInt32(row.Cells("Column3").Value)

 
                   ' تنفيذ أمر الإدخال
                    insertCommand.ExecuteNonQuery()
                End If
            Next

            ' 
تأكيد المعاملة
            transaction
.Commit()

 
           MessageBox.Show("Data saved successfully!")
 
       Catch ex As Exception
            
' إذا حدث خطأ، التراجع عن المعاملة
            transaction.Rollback()
            MessageBox.Show("An error occurred: " & ex.Message)
        End Try
    End Using
End Sub 

تأكد من تعديل أسماء الأعمدة (Column1, Column2, Column3) وأسماء الجدول (YourTableName) والاتصال (YourServerName, YourDatabaseName) بما يتناسب مع إعداداتك الخاصة.


بهذا الكود، يمكنك استيراد البيانات من Excel إلى DataGridView، ثم حفظها في قاعدة البيانات باستخدام زر يقوم باستدعاء الدالة SaveDataGridViewToDatabas

شكرا لك يا طيب 

ولكن هذ الكود ما اشتغل معايا للاسف 
هذا الكود الي انا شغال عليه :

Imports ExcelDataReader

Imports System.Data.SqlClient

Imports System.IO

Imports Microsoft.Office.Interop



Public Class Frm_Insert_Items

    Public Shared Sub SaveGridToExcel(ByVal DGV As DataGridView) ' صب نسخ من الجريد لإكسل

        Try

            Dim XCELAPP As Microsoft.Office.Interop.Excel.Application = Nothing

            Dim XWORKBOOK As Microsoft.Office.Interop.Excel.Workbook = Nothing

            Dim XSHEET As Microsoft.Office.Interop.Excel.Worksheet = Nothing

            Dim misValue As Object = System.Reflection.Missing.Value

            If DGV.Rows.Count > 0 Then

                Dim filename As String = ""

                Dim SV As New SaveFileDialog()

                SV.Filter = "Excel Files|*.xlsx|Excel 2003|*.xls"



                If SV.ShowDialog = DialogResult.OK Then

                    If DGV.RightToLeft = RightToLeft.Yes Then

                        DGV.RightToLeft = False 'تغيير اتجاه الجريد من اليمين لليسار لكي لا ينسخ بالمقلوب

                        filename = SV.FileName

                        Dim multiselect As Boolean = DGV.MultiSelect

                        DGV.MultiSelect = True

                        DGV.SelectAll()

                        DGV.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText

                        Clipboard.SetDataObject(DGV.GetClipboardContent())

                        Dim results = System.Convert.ToString(Clipboard.GetData(DataFormats.Text))

                        DGV.ClearSelection()

                        DGV.MultiSelect = multiselect

                        DGV.RightToLeft = RightToLeft.Yes ' ارجاع اتجاه الجريد لليمين

                        XCELAPP = New Excel.Application()

                        XWORKBOOK = XCELAPP.Workbooks.Add(misValue)

                        XCELAPP.DisplayAlerts = False

                        XCELAPP.Visible = False

                        XSHEET = XWORKBOOK.ActiveSheet

                        XSHEET.DisplayRightToLeft = True

                        XSHEET.PasteSpecial(RightToLeft.Yes)

                        XWORKBOOK.SaveAs(filename, Excel.XlFileFormat.xlOpenXMLWorkbook)

                        XWORKBOOK.Close(False)

                        XCELAPP.Quit()

                    Else

                        filename = SV.FileName

                        Dim multiselect As Boolean = DGV.MultiSelect

                        DGV.MultiSelect = True

                        DGV.SelectAll()

                        DGV.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText

                        Clipboard.SetDataObject(DGV.GetClipboardContent())

                        Dim results = System.Convert.ToString(Clipboard.GetData(DataFormats.Text))

                        DGV.ClearSelection()

                        DGV.MultiSelect = multiselect

                        XCELAPP = New Excel.Application()

                        XWORKBOOK = XCELAPP.Workbooks.Add(misValue)

                        XCELAPP.DisplayAlerts = False

                        XCELAPP.Visible = False

                        XSHEET = XWORKBOOK.ActiveSheet

                        XSHEET.Paste()

                        XWORKBOOK.SaveAs(filename, Excel.XlFileFormat.xlOpenXMLWorkbook)

                        XWORKBOOK.Close(False)

                        XCELAPP.Quit()

                    End If



                    If MessageBox.Show("هل تريد فتح الملف ؟", "فتح ملف الأكسل", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading) = MsgBoxResult.Yes Then

                        Process.Start(SV.FileName)

                    End If

                    Try

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(XSHEET)

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(XWORKBOOK)

                        System.Runtime.InteropServices.Marshal.ReleaseComObject(XCELAPP)

                    Catch

                    End Try

                End If

            End If



        Catch ex As Exception

            MessageBox.Show(ex.ToString)

        End Try

    End Sub



    Private Sub BTN_EXCEL_COPY_Click(sender As Object, e As EventArgs) Handles BTN_EXCEL_COPY.Click

        SaveGridToExcel(Dgv)

    End Sub



    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Try ' استيراد من الإكسل

            Dgv.Rows.Clear()

            Dim OFD As New OpenFileDialog

            OFD.Filter = "Excel Files|*.xlsx|Excel 2003|*.xls"

            OFD.Title = (" استيراد البيانات من الورقة الأولى من السطر الثاني في ملف الإكسل")

            If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then

                BTN_EXCEL_COPY.Text = "يرجى الانتظار"

                BTN_EXCEL_COPY.BackColor = Color.Tomato

                BTN_EXCEL_COPY.Enabled = False

                Dgv.DataSource = Nothing

                Dim PATH_ As String = OFD.FileName



                Dim COUNT_ As Integer = 0 'تعريف متغير للوب

                If Dt.Rows.Count > 0 Then

                    Dgv.RowCount = Dt.Rows.Count + 1 ' مهم جدا عدد الاسطر في الداتاجريد تساوي عدد الاسطر في الداتاتيبل ويضيف سطر

                    For I As Integer = 0 To Dt.Rows.Count - 1 ' تعبئة الداتاجريد بحيث يمر على الداتا تيبل بلوب

                        Dgv.Rows(COUNT_).Cells(3).Value = Dt.Rows(I)(0).ToString

                        Dgv.Rows(COUNT_).Cells(4).Value = Dt.Rows(I)(1).ToString

                        'Dgv.Rows(COUNT_).Cells(5).Value = DT.Rows(I)(2).ToString

                        'Dgv.Rows(COUNT_).Cells(6).Value = DT.Rows(I)(3).ToString

                        'Dgv.Rows(COUNT_).Cells(7).Value = DT.Rows(I)(4).ToString

                        'Dgv.Rows(COUNT_).Cells(8).Value = DT.Rows(I)(5).ToString

                        'Dgv.Rows(COUNT_).Cells(9).Value = DT.Rows(I)(6).ToString

                        'Dgv.Rows(COUNT_).Cells(10).Value = DT.Rows(I)(7).ToString

                        'Dgv.Rows(COUNT_).Cells(11).Value = DT.Rows(I)(8).ToString

                        'Dgv.Rows(COUNT_).Cells(12).Value = DT.Rows(I)(9).ToString

                        'Dgv.Rows(COUNT_).Cells(13).Value = DT.Rows(I)(10).ToString

                        'Dgv.Rows(COUNT_).Cells(14).Value = DT.Rows(I)(11).ToString

                        'Dgv.Rows(COUNT_).Cells(15).Value = DT.Rows(I)(12).ToString

                        'Dgv.Rows(COUNT_).Cells(16).Value = DT.Rows(I)(13).ToString

                        'Dgv.Rows(COUNT_).Cells(17).Value = DT.Rows(I)(14).ToString

                        'Dgv.Rows(COUNT_).Cells(18).Value = DT.Rows(I)(15).ToString

                        'Dgv.Rows(COUNT_).Cells(19).Value = DT.Rows(I)(16).ToString

                        'Dgv.Rows(COUNT_).Cells(20).Value = DT.Rows(I)(17).ToString

                        COUNT_ += 1 ' بما أنه بدأ من السطر0 نزيده واحد في كل لوب

                    Next

                End If



            Else

                End

            End If

            BTN_EXCEL_COPY.Text = "استيراد من إكسل"

            BTN_EXCEL_COPY.Enabled = True

            BTN_EXCEL_COPY.BackColor = Color.Transparent

        Catch ex As Exception

            MessageBox.Show(ex.ToString)

        End Try



    End Sub
End Class


الرد }}}
تم الشكر بواسطة:
#5
مرحبا أخي هذا الكود جربه وعدل الباقي بحسب قاعدة البيانات 
وتعديل كود الاتصال

يوجد زر لجلب البيانات من اكسل
يوجد زر لحفظ البيانات الى قاعدة البيانات
يوجد زر لعرض البيانات من قاعدة البيانات
يوجد زر لتصدير البيانات الى ملف اكسل

ملاحظة:
هل دائماً الجدول فارغ ام انك تقوم بإضافة البيانات مع البيانات السابقة ام انك تقوم بتفريق الجدول وملئه من ملف الاكسل ام انط تقوم بتعديل البيانات في حال وجودة بحسب رقم الباركود للصنف
أسالة تطرح حتى يتم تعديل الكود بما يتناسب مع العمل الذي تقوم به.

الكود كامل

PHP كود :
Imports System.Data.SqlClient
Imports Excel 
Microsoft.Office.Interop.Excel

Public Class Form3
    Private Sub ButtonImport_Click
(sender As ObjectAs EventArgsHandles ButtonImport.Click
        Dim openFileDialog 
As New OpenFileDialog()
 
       openFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If openFileDialog.ShowDialog() = DialogResult.OK Then
            ImportExcelToDataGridView
(openFileDialog.FileName)
 
       End If
 
   End Sub

    Private Sub ImportExcelToDataGridView
(ByVal filePath As String)
 
       Dim excelApp As New Excel.Application()
 
       Dim excelWorkbook As Excel.Workbook excelApp.Workbooks.Open(filePath)
 
       Dim excelWorksheet As Excel.Worksheet CType(excelWorkbook.Sheets(1), Excel.Worksheet)
 
       Dim excelRange As Excel.Range excelWorksheet.UsedRange

        
' قراءة السطر الأول كعناوين الأعمدة
        For col As Integer = 1 To 15
            DataGridView1.Columns.Add(Convert.ToString(excelRange.Cells(1, col).Value2), Convert.ToString(excelRange.Cells(1, col).Value2))
        Next

        ' 
قراءة البيانات من السطر الثاني
        For row 
As Integer 2 To excelRange.Rows.Count
            Dim isRowEmpty 
As Boolean True
            Dim rowData
(14) As String ' مصفوفة لاستيعاب بيانات الصف

            For col As Integer = 1 To 15
                Dim cellValue As String = Convert.ToString(excelRange.Cells(row, col).Value2)
                rowData(col - 1) = cellValue
                If Not String.IsNullOrWhiteSpace(cellValue) Then
                    isRowEmpty = False
                End If
            Next

            If Not isRowEmpty Then
                DataGridView1.Rows.Add(rowData)
            End If
        Next

        excelWorkbook.Close(False)
        excelApp.Quit()

        ReleaseObject(excelRange)
        ReleaseObject(excelWorksheet)
        ReleaseObject(excelWorkbook)
        ReleaseObject(excelApp)
    End Sub

    Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click
        SaveDataGridViewToDatabase()
    End Sub

    Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click
        LoadDataFromDatabase()
    End Sub

    Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click
        ExportDataGridViewToExcel()
    End Sub

    Private Sub SaveDataGridViewToDatabase()
        Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
        Using cn As New SqlConnection(connectionString)
            cn.Open()
            For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row.IsNewRow Then
                    Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode , ItemNameA , ItemNameE , ..., Column15) VALUES (@ItemBarcode , @ItemNameA , @ItemNameE, ..., @val15)", cn)
                        cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value)
                        cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value)
                        cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value)
                        '
...
 
                       cm.Parameters.AddWithValue("@val15"row.Cells(14).Value)
 
                       cm.ExecuteNonQuery()
 
                   End Using
                End 
If
 
           Next
        End Using
        MessageBox
.Show("Data saved successfully!")
 
   End Sub
    Private Sub LoadDataFromDatabase
()
 
       Dim connectionString As String "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
 
       Using cn As New SqlConnection(connectionString)
 
           Dim query As String "SELECT * FROM Item_Tbl"
 
           Dim da As New SqlDataAdapter(querycn)
 
           Dim dt As New DataTable()
 
           da.Fill(dt)
 
           DataGridView1.DataSource dt
        End Using
    End Sub

    Private Sub ExportDataGridViewToExcel
()
 
       Dim excelApp As New Excel.Application()
 
       Dim excelWorkbook As Excel.Workbook excelApp.Workbooks.Add()
 
       Dim excelWorksheet As Excel.Worksheet CType(excelWorkbook.Sheets(1), Excel.Worksheet)

 
       ' إضافة عناوين الأعمدة
        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText
        Next

        ' 
إضافة البيانات
        For row 
As Integer 0 To DataGridView1.Rows.Count 1
            For col 
As Integer 0 To DataGridView1.Columns.Count 1
                excelWorksheet
.Cells(row 2col 1).Value DataGridView1.Rows(row).Cells(col).Value
            Next
        Next

        
' حفظ الملف
        Dim saveFileDialog As New SaveFileDialog()
        saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm"
        If saveFileDialog.ShowDialog() = DialogResult.OK Then
            excelWorkbook.SaveAs(saveFileDialog.FileName)
            excelWorkbook.Close()
            excelApp.Quit()
            MessageBox.Show("Data exported successfully!")
        End If

        ReleaseObject(excelWorksheet)
        ReleaseObject(excelWorkbook)
        ReleaseObject(excelApp)
    End Sub

    Private Sub ReleaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub

End Class 
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة:
#6
(15-07-24, 10:44 AM)تركي الحلواني كتب : مرحبا أخي هذا الكود جربه وعدل الباقي بحسب قاعدة البيانات 
وتعديل كود الاتصال

يوجد زر لجلب البيانات من اكسل
يوجد زر لحفظ البيانات الى قاعدة البيانات
يوجد زر لعرض البيانات من قاعدة البيانات
يوجد زر لتصدير البيانات الى ملف اكسل

ملاحظة:
هل دائماً الجدول فارغ ام انك تقوم بإضافة البيانات مع البيانات السابقة ام انك تقوم بتفريق الجدول وملئه من ملف الاكسل ام انط تقوم بتعديل البيانات في حال وجودة بحسب رقم الباركود للصنف
أسالة تطرح حتى يتم تعديل الكود بما يتناسب مع العمل الذي تقوم به.

الكود كامل

PHP كود :
Imports System.Data.SqlClient
Imports Excel 
Microsoft.Office.Interop.Excel

Public Class Form3
    Private Sub ButtonImport_Click
(sender As ObjectAs EventArgsHandles ButtonImport.Click
        Dim openFileDialog 
As New OpenFileDialog()
 
       openFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If openFileDialog.ShowDialog() = DialogResult.OK Then
            ImportExcelToDataGridView
(openFileDialog.FileName)
 
       End If
 
   End Sub

    Private Sub ImportExcelToDataGridView
(ByVal filePath As String)
 
       Dim excelApp As New Excel.Application()
 
       Dim excelWorkbook As Excel.Workbook excelApp.Workbooks.Open(filePath)
 
       Dim excelWorksheet As Excel.Worksheet CType(excelWorkbook.Sheets(1), Excel.Worksheet)
 
       Dim excelRange As Excel.Range excelWorksheet.UsedRange

        
' قراءة السطر الأول كعناوين الأعمدة
        For col As Integer = 1 To 15
            DataGridView1.Columns.Add(Convert.ToString(excelRange.Cells(1, col).Value2), Convert.ToString(excelRange.Cells(1, col).Value2))
        Next

        ' 
قراءة البيانات من السطر الثاني
        For row 
As Integer 2 To excelRange.Rows.Count
            Dim isRowEmpty 
As Boolean True
            Dim rowData
(14) As String ' مصفوفة لاستيعاب بيانات الصف

            For col As Integer = 1 To 15
                Dim cellValue As String = Convert.ToString(excelRange.Cells(row, col).Value2)
                rowData(col - 1) = cellValue
                If Not String.IsNullOrWhiteSpace(cellValue) Then
                    isRowEmpty = False
                End If
            Next

            If Not isRowEmpty Then
                DataGridView1.Rows.Add(rowData)
            End If
        Next

        excelWorkbook.Close(False)
        excelApp.Quit()

        ReleaseObject(excelRange)
        ReleaseObject(excelWorksheet)
        ReleaseObject(excelWorkbook)
        ReleaseObject(excelApp)
    End Sub

    Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click
        SaveDataGridViewToDatabase()
    End Sub

    Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click
        LoadDataFromDatabase()
    End Sub

    Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click
        ExportDataGridViewToExcel()
    End Sub

    Private Sub SaveDataGridViewToDatabase()
        Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
        Using cn As New SqlConnection(connectionString)
            cn.Open()
            For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row.IsNewRow Then
                    Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode , ItemNameA , ItemNameE , ..., Column15) VALUES (@ItemBarcode , @ItemNameA , @ItemNameE, ..., @val15)", cn)
                        cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value)
                        cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value)
                        cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value)
                        '
...
 
                       cm.Parameters.AddWithValue("@val15"row.Cells(14).Value)
 
                       cm.ExecuteNonQuery()
 
                   End Using
                End 
If
 
           Next
        End Using
        MessageBox
.Show("Data saved successfully!")
 
   End Sub
    Private Sub LoadDataFromDatabase
()
 
       Dim connectionString As String "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
 
       Using cn As New SqlConnection(connectionString)
 
           Dim query As String "SELECT * FROM Item_Tbl"
 
           Dim da As New SqlDataAdapter(querycn)
 
           Dim dt As New DataTable()
 
           da.Fill(dt)
 
           DataGridView1.DataSource dt
        End Using
    End Sub

    Private Sub ExportDataGridViewToExcel
()
 
       Dim excelApp As New Excel.Application()
 
       Dim excelWorkbook As Excel.Workbook excelApp.Workbooks.Add()
 
       Dim excelWorksheet As Excel.Worksheet CType(excelWorkbook.Sheets(1), Excel.Worksheet)

 
       ' إضافة عناوين الأعمدة
        For col As Integer = 0 To DataGridView1.Columns.Count - 1
            excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText
        Next

        ' 
إضافة البيانات
        For row 
As Integer 0 To DataGridView1.Rows.Count 1
            For col 
As Integer 0 To DataGridView1.Columns.Count 1
                excelWorksheet
.Cells(row 2col 1).Value DataGridView1.Rows(row).Cells(col).Value
            Next
        Next

        
' حفظ الملف
        Dim saveFileDialog As New SaveFileDialog()
        saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm"
        If saveFileDialog.ShowDialog() = DialogResult.OK Then
            excelWorkbook.SaveAs(saveFileDialog.FileName)
            excelWorkbook.Close()
            excelApp.Quit()
            MessageBox.Show("Data exported successfully!")
        End If

        ReleaseObject(excelWorksheet)
        ReleaseObject(excelWorkbook)
        ReleaseObject(excelApp)
    End Sub

    Private Sub ReleaseObject(ByVal obj As Object)
        Try
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
            obj = Nothing
        Catch ex As Exception
            obj = Nothing
        Finally
            GC.Collect()
        End Try
    End Sub

End Class 


شكرا لك يا اخي الكريم اقدر لك مساعدتك 

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


اليوم اشتغلت على الكود واشتغل معايا ولكن في مشكلتين :
1- عند الضغط على رز فتح الاكسل وتنزيل ملف الاصناف اذا كان عدد كبير من الاصناف ( يعلق ) ولازم اغلق البرنامج .اذاكان عدد اصناف عدد قليل ينزل على الداتاجريد عادي
2- عند الحفظ اذا كان فيه اي بيانات يحدث خطأ( 'Violation of PRIMARY KEY constraint 'PK_Item_Tbl'. Cannot insert duplicate key in object 'dbo.Item_Tbl'. The duplicate key value is (10000001).
The statement has been terminated.')


شاكر لك
الرد }}}
تم الشكر بواسطة:
#7
جرب هذا الكود

PHP كود :
Imports System.Data.OleDb
Imports System
.Data.SqlClient
Imports Excel 
Microsoft.Office.Interop.Excel

Public Class Form3
    Private Sub ButtonImport_Click
(sender As ObjectAs EventArgsHandles ButtonImport.Click
        Dim openFileDialog 
As New OpenFileDialog()
 
       openFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If openFileDialog.ShowDialog() = DialogResult.OK Then
            ImportExcelToDataGridView
(openFileDialog.FileName)
 
       End If
 
   End Sub

    Private Sub ImportExcelToDataGridView
(ByVal filePath As String)
 
       Dim conStr As String ""
 
       Dim extension As String IO.Path.GetExtension(filePath)

 
       Select Case extension
            Case 
".xls"
 
               conStr "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" filePath ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'"
 
           Case ".xlsx"
 
               conStr "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" filePath ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'"
 
       End Select

        Using con 
As New OleDbConnection(conStr)
 
           Using cmd As New OleDbCommand("SELECT * FROM [Sheet1$]"con)
 
               con.Open()
 
               Dim dt As New DataTable()
 
               Using da As New OleDbDataAdapter(cmd)
 
                   da.Fill(dt)
 
                   DataGridView1.DataSource dt
                End Using
                con
.Close()
 
           End Using
        End Using
    End Sub

    Private Sub ButtonSave_Click
(sender As ObjectAs EventArgsHandles ButtonSave.Click
        SaveDataGridViewToDatabase
()
 
   End Sub

    Private Sub ButtonLoad_Click
(sender As ObjectAs EventArgsHandles ButtonLoad.Click
        LoadDataFromDatabase
()
 
   End Sub

    Private Sub ButtonExport_Click
(sender As ObjectAs EventArgsHandles ButtonExport.Click
        ExportDataGridViewToExcel
()
 
   End Sub

    Private Sub SaveDataGridViewToDatabase
()
 
       Dim connectionString As String "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
 
       Using cn As New SqlConnection(connectionString)
 
           cn.Open()
 
           For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row
.IsNewRow Then
                    Using cm 
As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)"cn)
 
                       cm.Parameters.AddWithValue("@ItemBarcode"row.Cells(0).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameA"row.Cells(1).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameE"row.Cells(2).Value)
 
                       '...
                        cm.Parameters.AddWithValue("@val15", row.Cells(14).Value)
                        cm.ExecuteNonQuery()
                    End Using
                End If
            Next
        End Using
        MessageBox.Show("Data saved successfully!")
    End Sub

    Private Sub LoadDataFromDatabase()
        Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
        Using cn As New SqlConnection(connectionString)
            Dim query As String = "SELECT * FROM Item_Tbl"
            Dim da As New SqlDataAdapter(query, cn)
            Dim dt As New DataTable()
            da.Fill(dt)
            DataGridView1.DataSource = dt
        End Using
    End Sub

    Private Sub ExportDataGridViewToExcel()
        Dim excelApp As New Excel.Application()
        Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add()
        Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)

        ' 
إضافة عناوين الأعمدة
        For col 
As Integer 0 To DataGridView1.Columns.Count 1
            excelWorksheet
.Cells(1col 1).Value DataGridView1.Columns(col).HeaderText
        Next

        
' إضافة البيانات
        For row As Integer = 0 To DataGridView1.Rows.Count - 1
            For col As Integer = 0 To DataGridView1.Columns.Count - 1
                excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value
            Next
        Next

        ' 
حفظ الملف
        Dim saveFileDialog 
As New SaveFileDialog()
 
       saveFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If saveFileDialog.ShowDialog() = DialogResult.OK Then
            excelWorkbook
.SaveAs(saveFileDialog.FileName)
 
           excelWorkbook.Close()
 
           excelApp.Quit()
 
           MessageBox.Show("Data exported successfully!")
 
       End If

 
       ReleaseObject(excelWorksheet)
 
       ReleaseObject(excelWorkbook)
 
       ReleaseObject(excelApp)
 
   End Sub

    Private Sub ReleaseObject
(ByVal obj As Object)
 
       Try
            System
.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
 
           obj Nothing
        Catch ex 
As Exception
            obj 
Nothing
        Finally
            GC
.Collect()
 
       End Try
 
   End Sub
End 
Class 
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة:
#8
(18-07-24, 03:35 PM)تركي الحلواني كتب : جرب هذا الكود

PHP كود :
Imports System.Data.OleDb
Imports System
.Data.SqlClient
Imports Excel 
Microsoft.Office.Interop.Excel

Public Class Form3
    Private Sub ButtonImport_Click
(sender As ObjectAs EventArgsHandles ButtonImport.Click
        Dim openFileDialog 
As New OpenFileDialog()
 
       openFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If openFileDialog.ShowDialog() = DialogResult.OK Then
            ImportExcelToDataGridView
(openFileDialog.FileName)
 
       End If
 
   End Sub

    Private Sub ImportExcelToDataGridView
(ByVal filePath As String)
 
       Dim conStr As String ""
 
       Dim extension As String IO.Path.GetExtension(filePath)

 
       Select Case extension
            Case 
".xls"
 
               conStr "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" filePath ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'"
 
           Case ".xlsx"
 
               conStr "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" filePath ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'"
 
       End Select

        Using con 
As New OleDbConnection(conStr)
 
           Using cmd As New OleDbCommand("SELECT * FROM [Sheet1$]"con)
 
               con.Open()
 
               Dim dt As New DataTable()
 
               Using da As New OleDbDataAdapter(cmd)
 
                   da.Fill(dt)
 
                   DataGridView1.DataSource dt
                End Using
                con
.Close()
 
           End Using
        End Using
    End Sub

    Private Sub ButtonSave_Click
(sender As ObjectAs EventArgsHandles ButtonSave.Click
        SaveDataGridViewToDatabase
()
 
   End Sub

    Private Sub ButtonLoad_Click
(sender As ObjectAs EventArgsHandles ButtonLoad.Click
        LoadDataFromDatabase
()
 
   End Sub

    Private Sub ButtonExport_Click
(sender As ObjectAs EventArgsHandles ButtonExport.Click
        ExportDataGridViewToExcel
()
 
   End Sub

    Private Sub SaveDataGridViewToDatabase
()
 
       Dim connectionString As String "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
 
       Using cn As New SqlConnection(connectionString)
 
           cn.Open()
 
           For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row
.IsNewRow Then
                    Using cm 
As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)"cn)
 
                       cm.Parameters.AddWithValue("@ItemBarcode"row.Cells(0).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameA"row.Cells(1).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameE"row.Cells(2).Value)
 
                       '...
                        cm.Parameters.AddWithValue("@val15", row.Cells(14).Value)
                        cm.ExecuteNonQuery()
                    End Using
                End If
            Next
        End Using
        MessageBox.Show("Data saved successfully!")
    End Sub

    Private Sub LoadDataFromDatabase()
        Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
        Using cn As New SqlConnection(connectionString)
            Dim query As String = "SELECT * FROM Item_Tbl"
            Dim da As New SqlDataAdapter(query, cn)
            Dim dt As New DataTable()
            da.Fill(dt)
            DataGridView1.DataSource = dt
        End Using
    End Sub

    Private Sub ExportDataGridViewToExcel()
        Dim excelApp As New Excel.Application()
        Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add()
        Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)

        ' 
إضافة عناوين الأعمدة
        For col 
As Integer 0 To DataGridView1.Columns.Count 1
            excelWorksheet
.Cells(1col 1).Value DataGridView1.Columns(col).HeaderText
        Next

        
' إضافة البيانات
        For row As Integer = 0 To DataGridView1.Rows.Count - 1
            For col As Integer = 0 To DataGridView1.Columns.Count - 1
                excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value
            Next
        Next

        ' 
حفظ الملف
        Dim saveFileDialog 
As New SaveFileDialog()
 
       saveFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If saveFileDialog.ShowDialog() = DialogResult.OK Then
            excelWorkbook
.SaveAs(saveFileDialog.FileName)
 
           excelWorkbook.Close()
 
           excelApp.Quit()
 
           MessageBox.Show("Data exported successfully!")
 
       End If

 
       ReleaseObject(excelWorksheet)
 
       ReleaseObject(excelWorkbook)
 
       ReleaseObject(excelApp)
 
   End Sub

    Private Sub ReleaseObject
(ByVal obj As Object)
 
       Try
            System
.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
 
           obj Nothing
        Catch ex 
As Exception
            obj 
Nothing
        Finally
            GC
.Collect()
 
       End Try
 
   End Sub
End 
Class 

السلام عليكم 

ياصديقي ما اشتغل معايا الكود 
تطلع هذي الرسالة 

انا عندي قاعدة البيانات sqlserver 2014 


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#9
جرب التعديل هذا 

أولا 
في نافذة "Package Manager Console"، اكتب الأوامر التالية:

PHP كود :
Install-Package ExcelDataReader
Install
-Package ExcelDataReader.DataSet 

ثانيا جرب الكود التالي

PHP كود :
Imports System.Data
Imports System
.Data.SqlClient
Imports System
.IO
Imports ExcelDataReader

Public Class Form3
    Private Sub ButtonImport_Click
(sender As ObjectAs EventArgsHandles ButtonImport.Click
        Dim openFileDialog 
As New OpenFileDialog()
 
       openFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If openFileDialog.ShowDialog() = DialogResult.OK Then
            ImportExcelToDataGridView
(openFileDialog.FileName)
 
       End If
 
   End Sub

    Private Sub ImportExcelToDataGridView
(ByVal filePath As String)
 
       Try
            Using stream 
File.Open(filePathFileMode.OpenFileAccess.Read)
 
               Dim excelReader As IExcelDataReader ExcelReaderFactory.CreateReader(stream)
 
               Dim result As DataSet excelReader.AsDataSet(New ExcelDataSetConfiguration() With {
 
                   .ConfigureDataTable = Function(__) New ExcelDataTableConfiguration() With {
 
                       .UseHeaderRow True
                    
}
 
               })

 
               Dim dataTable As DataTable result.Tables(0)
 
               DataGridView1.DataSource dataTable
                excelReader
.Close()
 
           End Using
        Catch ex 
As Exception
            MessageBox
.Show("Error importing Excel file: " ex.Message)
 
       End Try
 
   End Sub

    Private Sub ButtonSave_Click
(sender As ObjectAs EventArgsHandles ButtonSave.Click
        SaveDataGridViewToDatabase
()
 
   End Sub

    Private Sub ButtonLoad_Click
(sender As ObjectAs EventArgsHandles ButtonLoad.Click
        LoadDataFromDatabase
()
 
   End Sub

    Private Sub ButtonExport_Click
(sender As ObjectAs EventArgsHandles ButtonExport.Click
        ExportDataGridViewToExcel
()
 
   End Sub

    Private Sub SaveDataGridViewToDatabase
()
 
       Dim connectionString As String "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
 
       Using cn As New SqlConnection(connectionString)
 
           cn.Open()
 
           For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row
.IsNewRow Then
                    Using cm 
As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)"cn)
 
                       cm.Parameters.AddWithValue("@ItemBarcode"row.Cells(0).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameA"row.Cells(1).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameE"row.Cells(2).Value)
 
                       '...
                        cm.Parameters.AddWithValue("@val15", row.Cells(14).Value)
                        cm.ExecuteNonQuery()
                    End Using
                End If
            Next
        End Using
        MessageBox.Show("Data saved successfully!")
    End Sub

    Private Sub LoadDataFromDatabase()
        Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
        Using cn As New SqlConnection(connectionString)
            Dim query As String = "SELECT * FROM Item_Tbl"
            Dim da As New SqlDataAdapter(query, cn)
            Dim dt As New DataTable()
            da.Fill(dt)
            DataGridView1.DataSource = dt
        End Using
    End Sub

    Private Sub ExportDataGridViewToExcel()
        Dim excelApp As New Excel.Application()
        Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add()
        Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)

        ' 
إضافة عناوين الأعمدة
        For col 
As Integer 0 To DataGridView1.Columns.Count 1
            excelWorksheet
.Cells(1col 1).Value DataGridView1.Columns(col).HeaderText
        Next

        
' إضافة البيانات
        For row As Integer = 0 To DataGridView1.Rows.Count - 1
            For col As Integer = 0 To DataGridView1.Columns.Count - 1
                excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value
            Next
        Next

        ' 
حفظ الملف
        Dim saveFileDialog 
As New SaveFileDialog()
 
       saveFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If saveFileDialog.ShowDialog() = DialogResult.OK Then
            excelWorkbook
.SaveAs(saveFileDialog.FileName)
 
           excelWorkbook.Close()
 
           excelApp.Quit()
 
           MessageBox.Show("Data exported successfully!")
 
       End If

 
       ReleaseObject(excelWorksheet)
 
       ReleaseObject(excelWorkbook)
 
       ReleaseObject(excelApp)
 
   End Sub

    Private Sub ReleaseObject
(ByVal obj As Object)
 
       Try
            System
.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
 
           obj Nothing
        Catch ex 
As Exception
            obj 
Nothing
        Finally
            GC
.Collect()
 
       End Try
 
   End Sub
End 
Class 

تم التجربة ويعمل بشكل جيد وسريع
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة: Hamza8484
#10
(22-07-24, 10:29 AM)تركي الحلواني كتب : جرب التعديل هذا 

أولا 
في نافذة "Package Manager Console"، اكتب الأوامر التالية:

PHP كود :
Install-Package ExcelDataReader
Install
-Package ExcelDataReader.DataSet 

ثانيا جرب الكود التالي

PHP كود :
Imports System.Data
Imports System
.Data.SqlClient
Imports System
.IO
Imports ExcelDataReader

Public Class Form3
    Private Sub ButtonImport_Click
(sender As ObjectAs EventArgsHandles ButtonImport.Click
        Dim openFileDialog 
As New OpenFileDialog()
 
       openFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If openFileDialog.ShowDialog() = DialogResult.OK Then
            ImportExcelToDataGridView
(openFileDialog.FileName)
 
       End If
 
   End Sub

    Private Sub ImportExcelToDataGridView
(ByVal filePath As String)
 
       Try
            Using stream 
File.Open(filePathFileMode.OpenFileAccess.Read)
 
               Dim excelReader As IExcelDataReader ExcelReaderFactory.CreateReader(stream)
 
               Dim result As DataSet excelReader.AsDataSet(New ExcelDataSetConfiguration() With {
 
                   .ConfigureDataTable = Function(__) New ExcelDataTableConfiguration() With {
 
                       .UseHeaderRow True
                    
}
 
               })

 
               Dim dataTable As DataTable result.Tables(0)
 
               DataGridView1.DataSource dataTable
                excelReader
.Close()
 
           End Using
        Catch ex 
As Exception
            MessageBox
.Show("Error importing Excel file: " ex.Message)
 
       End Try
 
   End Sub

    Private Sub ButtonSave_Click
(sender As ObjectAs EventArgsHandles ButtonSave.Click
        SaveDataGridViewToDatabase
()
 
   End Sub

    Private Sub ButtonLoad_Click
(sender As ObjectAs EventArgsHandles ButtonLoad.Click
        LoadDataFromDatabase
()
 
   End Sub

    Private Sub ButtonExport_Click
(sender As ObjectAs EventArgsHandles ButtonExport.Click
        ExportDataGridViewToExcel
()
 
   End Sub

    Private Sub SaveDataGridViewToDatabase
()
 
       Dim connectionString As String "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
 
       Using cn As New SqlConnection(connectionString)
 
           cn.Open()
 
           For Each row As DataGridViewRow In DataGridView1.Rows
                If Not row
.IsNewRow Then
                    Using cm 
As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)"cn)
 
                       cm.Parameters.AddWithValue("@ItemBarcode"row.Cells(0).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameA"row.Cells(1).Value)
 
                       cm.Parameters.AddWithValue("@ItemNameE"row.Cells(2).Value)
 
                       '...
                        cm.Parameters.AddWithValue("@val15", row.Cells(14).Value)
                        cm.ExecuteNonQuery()
                    End Using
                End If
            Next
        End Using
        MessageBox.Show("Data saved successfully!")
    End Sub

    Private Sub LoadDataFromDatabase()
        Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True"
        Using cn As New SqlConnection(connectionString)
            Dim query As String = "SELECT * FROM Item_Tbl"
            Dim da As New SqlDataAdapter(query, cn)
            Dim dt As New DataTable()
            da.Fill(dt)
            DataGridView1.DataSource = dt
        End Using
    End Sub

    Private Sub ExportDataGridViewToExcel()
        Dim excelApp As New Excel.Application()
        Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add()
        Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)

        ' 
إضافة عناوين الأعمدة
        For col 
As Integer 0 To DataGridView1.Columns.Count 1
            excelWorksheet
.Cells(1col 1).Value DataGridView1.Columns(col).HeaderText
        Next

        
' إضافة البيانات
        For row As Integer = 0 To DataGridView1.Rows.Count - 1
            For col As Integer = 0 To DataGridView1.Columns.Count - 1
                excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value
            Next
        Next

        ' 
حفظ الملف
        Dim saveFileDialog 
As New SaveFileDialog()
 
       saveFileDialog.Filter "Excel Files|*.xls;*.xlsx;*.xlsm"
 
       If saveFileDialog.ShowDialog() = DialogResult.OK Then
            excelWorkbook
.SaveAs(saveFileDialog.FileName)
 
           excelWorkbook.Close()
 
           excelApp.Quit()
 
           MessageBox.Show("Data exported successfully!")
 
       End If

 
       ReleaseObject(excelWorksheet)
 
       ReleaseObject(excelWorkbook)
 
       ReleaseObject(excelApp)
 
   End Sub

    Private Sub ReleaseObject
(ByVal obj As Object)
 
       Try
            System
.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
 
           obj Nothing
        Catch ex 
As Exception
            obj 
Nothing
        Finally
            GC
.Collect()
 
       End Try
 
   End Sub
End 
Class 

تم التجربة ويعمل بشكل جيد وسريع


السلام عليكم 

شكرا لك اخي الكريم 
ومقدر تعبك معايا 

وان شاء الله في ميزان حسناتك 

الكود مش راضي يضبط معايا 
عند استيراد الاصناف ممتاز ما في اي مشكلة .
ولكن عند عملية الحفظ تظهر لي هذه الرسالة :


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  لماذا البرنامج يتوقف بدل عرض رسالة الخطأ justforit 0 108 07-12-25, 10:22 AM
آخر رد: justforit
  كيفية حفظ إعدادات البرنامج بحيث لا تتغير أحمد إبراهيم سعد 4 3,004 06-08-25, 06:34 PM
آخر رد: Taha Okla
  [سؤال] تغيير الفورم الرئيسي عند تشغيل البرنامج في Visual Studio مع .NET 8؟ silverlord 2 656 09-03-25, 03:52 AM
آخر رد: silverlord
Rainbow [VB.NET] عدد من هم فاتحي البرنامج محمد مسافر 1 418 25-02-25, 07:58 PM
آخر رد: princelovelorn
  مساعدة في استيراد البيانات من الليست بوكس fireswored1 4 481 22-01-25, 08:43 PM
آخر رد: fireswored1
  [Acces2010] مساعدة في كود استيراد يانات fireswored1 9 598 02-01-25, 03:25 AM
آخر رد: fireswored1
  استفسار عن حمايه البرنامج ahmedramy 1 557 25-12-24, 11:07 PM
آخر رد: aljzazy
  مساعدة في عمل جملة الاتصال في ملف خارج البرنامج Emam emam 2 388 25-11-24, 09:24 PM
آخر رد: Emam emam
  تغيير مكان حفظ الصورة من قاعدة البيانات إلى مجلد في مسار البرنامج F.H.M 37 2,353 05-11-24, 08:30 AM
آخر رد: F.H.M
  [مثال] تشغيل البرنامج كمسؤول alswade 2 465 30-10-24, 07:08 PM
آخر رد: aliday03

التنقل السريع :


يقوم بقرائة الموضوع: