منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] اريد كود لتصدير البيانات من DataGridView الى ملف Excel - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] اريد كود لتصدير البيانات من DataGridView الى ملف Excel (/showthread.php?tid=49822)



اريد كود لتصدير البيانات من DataGridView الى ملف Excel - zazasami - 02-08-24

السلام عليكم و رحمة الله و بركاته
اخواني و اخواتي في الله و اجهت الكثير من المشاكل لتصدير البيانات كما هو مذكور في العنوان حيث يوجد الكثير من الطرق لفعل ذالك لاكن يوجد الكثير من العيوب لكل منهم 
اريد طريقة ستفي باحتاجاتي مع تقليل العيوب الى اقصى حد 
حيث اريد السرعة في الحفظ , استخدام دالة لتنفيذ هذه الاوامر مع اخذ اسم الملف و اسم الورقة كمتغيرات تكتب عند استدعاء الدالة لاني ساستعمل هذا الكود في عدة اماكن ، اهم شيء احتاجه سرعة العمل و تقليل استهلاك الذاكرة قدر المستطاع , اخيرا مرونة تعديل الدالة لانسخ منها عدت دوال اخرى كل منهم تعمل اما على حفظ اعمدة فقط او اسطر فقط او خلايا محددة من اسطر محددة 
و رحمك الله ووالديك يا من تقرئ الموضوع و يا من تجيب في الدنيا و الاخرة اللهم ادخله ووالديه فسيح جنانك ان شاء الله



RE: اريد كود لتصدير البيانات من DataGridView الى ملف Excel - mrfenix93 - 04-08-24

كود :
Private Sub ExportToExcel()

   Dim ExcelApp As Object, ExcelBook As Object
   Dim ExcelSheet As Object
   Dim i As Integer
   Dim j As Integer

   'create object of excel
   ExcelApp = CreateObject("Excel.Application")
   ExcelBook = ExcelApp.WorkBooks.Add
   ExcelSheet = ExcelBook.WorkSheets(1)

   Dim rowIndex As Integer = 1
   Dim colIndex As Integer = 1

   ''For Headers  
   With ExcelSheet
       For Each column As DataGridViewColumn In Me.DataGridView1.Columns
           If column.Name = "Id" Then
               .cells(rowIndex, 1) = column.HeaderText
           Else

               .cells(rowIndex, colIndex) = column.HeaderText
               colIndex = colIndex + 1
           End If
       Next
   End With


   ''For Rows
   With ExcelSheet
       For i = 0 To Me.DataGridView1.RowCount - 1
           If Not IsNothing(Me.DataGridView1.Rows(i).Cells(0).Value) Then
               rowIndex = rowIndex + 1
               colIndex = 1


               For j = 0 To DataGridView1.Columns.Count - 1
                   If DataGridView1.Columns(j).Name = "Id" Then
                       .cells(rowIndex, 1) = DataGridView1.Rows(i).Cells(j).Value
                   Else
                       .cells(rowIndex, colIndex) = DataGridView1.Rows(i).Cells(j).Value
                       colIndex = colIndex + 1
                   End If
               Next
           End If
       Next
   End With

   ExcelApp.Visible = True
   '
   ExcelSheet = Nothing
   ExcelBook = Nothing
   ExcelApp = Nothing

   MsgBox("")

End Sub