تقييم الموضوع :
  • 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 م ب / التحميلات : 42)
الرد
تم الشكر بواسطة: أبووسم


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  البحث في بيانات الجريد عن نص مكتوب في RichTextBox aftfm 5 135 09-04-21, 08:07 PM
آخر رد: messry
  [سؤال] كيفية التعامل مع عدة قواعد بيانات ابو انس 6 298 26-03-21, 02:52 AM
آخر رد: ابو انس
Rainbow [سؤال] سؤال عن طريقة توصيل كامبرا الموبايل بقاعدة بيانات خالد دياب 0 162 25-03-21, 07:13 PM
آخر رد: خالد دياب
  [سؤال] كيفية تصدير اعمدة محددة من الداتا قريد الي الاكسل عبدالكريم برشدان 2 186 20-03-21, 09:48 PM
آخر رد: عبدالكريم برشدان
  [سؤال] ممكن فكرة حفظ عدد غير معلوم من الصور بقاعدة بيانات سيكوال ahmedramzyaish 1 274 12-03-21, 09:34 PM
آخر رد: محمد فوزى محمد
  [VB.NET] طلب مساعدة VBA EXCEL macpro 0 147 06-03-21, 01:07 AM
آخر رد: macpro
  قاعدة بيانات Sql Server ghias 2 335 28-02-21, 08:57 AM
آخر رد: العتيق
  [VB.NET] كيفية حفظ ملف pdf الي قاعدة بيانات اكسس واسترجاعها Lathe1 5 384 20-02-21, 12:47 AM
آخر رد: Lathe1
  مشكلة عند تصدير الداتا قريد إلى الاكسل يظهر الوقت مع التاريخ ؟ أبووسم 3 386 19-02-21, 08:53 PM
آخر رد: أبووسم
  كيفية حفظ ملف pdf الي قاعدة بيانات اكسس واسترجاعها Lathe1 0 197 19-02-21, 10:04 AM
آخر رد: Lathe1

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


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