تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تصدير بيانات DataGridView1 الى ملف Excel
#1
السلام عليكم
كل عام وانتم بخير
اتمني ان تكونوا بخير حال وافضل صحة

لدي مشروع فيجوال بيسك مرتبط بقاعدة بيانات Access
لدي Form  به DataGridView اريد تصدير البيانات التي به الى ملف اكسيل عن طريق مربع الحوار حفظ الى Save as
لتحديد مكان الحفظ

انا استخدم هذا الكود
كود :
Dim MsExcel = CreateObject("Excel.Application")
       MsExcel.Workbooks.Add()
       For i As Integer = 0 To 3
       Next
       MsExcel.Cells(0 + 1).Value = DataGridView1.Columns(0).HeaderText
       MsExcel.Cells(1 + 1).Value = DataGridView1.Columns(2).HeaderText
       MsExcel.Cells(2 + 1).Value = DataGridView1.Columns(3).HeaderText
       MsExcel.Cells(3 + 1).Value = DataGridView1.Columns(4).HeaderText
       MsExcel.Cells(4 + 1).Value = DataGridView1.Columns(5).HeaderText
       MsExcel.Cells(5 + 1).Value = DataGridView1.Columns(10).HeaderText
       MsExcel.Cells(6 + 1).Value = DataGridView1.Columns(12).HeaderText
       MsExcel.Cells(7 + 1).Value = DataGridView1.Columns(37).HeaderText
       For j As Integer = 0 To DataGridView1.Rows.Count - 1
           MsExcel.Columns.Font.Name = "Times New Roman"
           MsExcel.Cells(j + 2, 1).Value = DataGridView1.Rows(j).Cells(0).Value
           MsExcel.Cells(j + 2, 2).Value = DataGridView1.Rows(j).Cells(2).Value
           MsExcel.Cells(j + 2, 3).Value = DataGridView1.Rows(j).Cells(3).Value
           MsExcel.Cells(j + 2, 4).Value = DataGridView1.Rows(j).Cells(4).Value
           MsExcel.Cells(j + 2, 5).Value = DataGridView1.Rows(j).Cells(5).Value
           MsExcel.Cells(j + 2, 6).Value = DataGridView1.Rows(j).Cells(10).Value
           MsExcel.Cells(j + 2, 7).Value = DataGridView1.Rows(j).Cells(12).Value
           MsExcel.Cells(j + 2, 8).Value = DataGridView1.Rows(j).Cells(37).Value
       Next
       MsExcel.Visible = True


وكذلك اريد ربط عملية التصدير هذه بــ ProgressBar 


ارجوا ان اجد ضالتي لديكم

كفانا الله واياكم شر الوباء 
سبحان الله وبحمده سبحان الله العظيم
الرد
تم الشكر بواسطة: ابراهيم ايبو , أبووسم
#2
الحمد لله وجدت الحل 
اولاً ساقوم بادراج SaveFileDialog1 الى الفورم ثم اضيف BackgroundWorker1
عند حدث الضغط على الزر الذي سينفذ عملية الاستخراج اكتب الكود التالي
كود :
       If BackgroundWorker1.IsBusy Then
           MsgBox("جاري استخراج ملف الان انتظر حتى تنتهي عملية الاستخراج ", Title:="تنبيه")
       Else
           SaveFileDialog1.Title = "Save Excel File"
           SaveFileDialog1.Filter = "Excel files  (*.xlsx)|*.xlsx"
           SaveFileDialog1.ShowDialog()
           If SaveFileDialog1.FileName = "" Then
               Exit Sub
           End If
           BackgroundWorker1.RunWorkerAsync()
       End If
وفي حدث BackgroundWorker1_DoWork
كود :
  Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
       'create an Excel WorkBook
       Dim MsExcel As New Excel.Application
       Dim sheet As Excel.Worksheet
       MsExcel.Workbooks.Add()
       sheet = MsExcel.ActiveWorkbook.ActiveSheet
       For i As Integer = 0 To 3
       Next
       MsExcel.Cells(0 + 1).Value = DataGridView1.Columns(0).HeaderText
       MsExcel.Cells(1 + 1).Value = DataGridView1.Columns(2).HeaderText
       MsExcel.Cells(2 + 1).Value = DataGridView1.Columns(3).HeaderText
       MsExcel.Cells(3 + 1).Value = DataGridView1.Columns(4).HeaderText
       MsExcel.Cells(4 + 1).Value = DataGridView1.Columns(5).HeaderText
       MsExcel.Cells(5 + 1).Value = DataGridView1.Columns(10).HeaderText
       MsExcel.Cells(6 + 1).Value = DataGridView1.Columns(12).HeaderText
       MsExcel.Cells(7 + 1).Value = DataGridView1.Columns(37).HeaderText
       For j As Integer = 0 To DataGridView1.Rows.Count - 1
           MsExcel.Columns.Font.Name = "Times New Roman"
           MsExcel.Cells(j + 2, 1).Value = DataGridView1.Rows(j).Cells(0).Value
           MsExcel.Cells(j + 2, 2).Value = DataGridView1.Rows(j).Cells(2).Value
           MsExcel.Cells(j + 2, 3).Value = DataGridView1.Rows(j).Cells(3).Value
           MsExcel.Cells(j + 2, 4).Value = DataGridView1.Rows(j).Cells(4).Value
           MsExcel.Cells(j + 2, 5).Value = DataGridView1.Rows(j).Cells(5).Value
           MsExcel.Cells(j + 2, 6).Value = DataGridView1.Rows(j).Cells(10).Value
           MsExcel.Cells(j + 2, 7).Value = DataGridView1.Rows(j).Cells(12).Value
           MsExcel.Cells(j + 2, 8).Value = DataGridView1.Rows(j).Cells(37).Value
           BackgroundWorker1.ReportProgress(j)
       Next
       MsExcel.ActiveWorkbook.SaveAs(SaveFileDialog1.FileName)
       MsExcel.Workbooks.Close()
       MsExcel.Quit()
   End Sub
وفي حدث BackgroundWorker1_ProgressChanged اضع الكود التالي
كود :
Private Sub BackgroundWorker1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
       ProgressBar1.Value = e.ProgressPercentage
       Label2.Text = e.ProgressPercentage + 1
   End Sub
وفي حدث BackgroundWorker1_RunWorkerCompleted اضع الكود التالي
كود :
Private Sub BackgroundWorker1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
     
 
       MsgBox("تمت العملية بنجاح", Title:="تهنئة")
     
   
   End Sub
وتاكد من ان قيمة worker report progress  = true وهذا فى خصائص ال  BackgroundWorker1

والله الموفق والمستعان
الرد
#3
نسيت ان اخبركم بوضع ProgressBar1 في الفورم ليتم التقدم مع عملية استخراج ملف الاكسيل
الرد
تم الشكر بواسطة: moosa_alabri , أبووسم , أبووسم
#4
http://vb4arb.com/vb/member.php?action=p...&uid=36040
السيد الفاضل
mr_hso
ممكن تضع المثال كامل
حاولت اطبق المثال
لم اصل
الرد
تم الشكر بواسطة:
#5
السيد الفاضل اين المثال
الرد
تم الشكر بواسطة:
#6
(20-01-21, 10:15 PM)atefkhalf2004 كتب : السيد الفاضل اين المثال

اسف اخي الكريم انشغلت ولم اقراء تعليقك الا الان
ارجو ان تتقبل اعتذاري
المثال مرفق لتعم الافادة للجميع ان شاء الله


الملفات المرفقة
.rar   exporttoexcel.rar (الحجم : 1.16 م ب / التحميلات : 109)
الرد
تم الشكر بواسطة: أبووسم , tryold
#7
بطل يعطيك العافيه
الرد
تم الشكر بواسطة:
#8
شكرا كثيرا بتعدي علي الواحد رغما عنه
مرة اخري شكرا
الرد
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] حفظ وتحميل صور base64 من قاعدة بيانات mysql blob datatype d3vc0d 0 106 28-08-21, 11:03 PM
آخر رد: d3vc0d
  [SQL] تابع_ الكود الخاص بحفظ و جلب صورة Image من و إلى قاعدة بيانات mmaalmesry 3 358 21-08-21, 06:32 PM
آخر رد: mmaalmesry
  حذف صفوف في جدول داخل قاعدة بيانات سيكوال سيرف momani33 5 248 21-08-21, 02:14 PM
آخر رد: momani33
  تصدير البيانات من نوع جديد اليوم السابع 3 665 18-08-21, 09:37 PM
آخر رد: يونس علي
  [VB.NET] تصدير الداتاجريد فيو للاكسيل احمد 2021 5 225 18-08-21, 08:47 PM
آخر رد: يونس علي
  نقل بيانات من جدولين متشابهيين DOX.1 2 241 15-08-21, 01:16 PM
آخر رد: DOX.1
  هل من مساعده فى تصدير بيانات الى الpdf خالد كامل1 1 183 15-08-21, 12:36 PM
آخر رد: ابراهيم ايبو
Star [SQL] الكود الخاص بحفظ و جلب صورة Image من و إلى قاعدة بيانات mmaalmesry 7 425 14-08-21, 10:05 AM
آخر رد: mmaalmesry
  كيفية جلب بيانات جدول داخل موقع إلى الداتاجريدفيو باستخدام مكتبة cefsharp bahnay0 0 202 12-08-21, 01:49 AM
آخر رد: bahnay0
  [VB.NET] محتاج كود دمج بيانات مكررة amtkurdi 2 315 29-07-21, 07:23 AM
آخر رد: amtkurdi

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


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