تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كود استيراد الاصناف من البرنامج الى الاكسيل
#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 

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


السلام عليكم 

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

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

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


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


الردود في هذا الموضوع
RE: كود استيراد الاصناف من البرنامج الى الاكسيل - بواسطة Hamza8484 - 23-07-24, 04:53 AM

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

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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم