تقييم الموضوع :
  • 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 م ب / التحميلات : 182)
الرد }}}
تم الشكر بواسطة: أبووسم , tryold
#7
بطل يعطيك العافيه
الرد }}}
تم الشكر بواسطة: mr_hso , mr_hso
#8
شكرا كثيرا بتعدي علي الواحد رغما عنه
مرة اخري شكرا
الرد }}}
تم الشكر بواسطة: mr_hso


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  هل من الممكن العمل على قاعدة بيانات اكسل على الفيجوال بيسك خالد كامل1 4 83 24-03-24, 02:00 AM
آخر رد: خالد كامل1
  [سؤال] أتمنى اجابة وافية:عمل برنامج بقاعدة بيانات SQL دون حاجة تثبيت SQLSERVER dr.programming 6 601 19-03-24, 08:56 AM
آخر رد: سلامه محمد11
  استعلام select عن مجموعة بيانات Adel27213 1 172 15-03-24, 01:11 AM
آخر رد: justforit
  تعديل بيانات عمود DataGridView دفعة واحدة مصمم هاوي 2 164 05-03-24, 08:27 PM
آخر رد: مصمم هاوي
  [VB.NET] تحديث بيانات فى كلاس من جدول سيكوال asdfar1977 6 184 26-02-24, 01:07 AM
آخر رد: asdfar1977
  كيفية جمع أرقام عمود فى الداتا جريد فيو بناءاً على بيانات معينة heem1986 5 225 25-02-24, 11:26 PM
آخر رد: heem1986
  [C#.NET] طباعة بيانات داتا جرد فيو h2551996 0 84 25-02-24, 02:31 PM
آخر رد: h2551996
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 1 312 21-02-24, 11:44 PM
آخر رد: AHMED213
  كيفية انشاء سكريبت لقاعدة بيانات من خلال الكود heem1986 1 194 20-02-24, 12:00 AM
آخر رد: Kamil
  كيفية تنفيذ أمر عرض بيانات من فورم ثان مصمم هاوي 7 329 19-02-24, 12:28 AM
آخر رد: مصمم هاوي

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


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