تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
تصدير البيانات الى ملف اكسل
#1
السلام عليكم اخوتي الكرام
لأول مرة اتعامل مع الاكسل وقد قمت بكتابة كود تصدير البيانات من الداتا غرايد فيو في فيجوال بيسك الى ملف اكسل
الكود يعمل (على كيفه)مرة يقوم بالعمل يشكل جيد واحيانا لايقوم  بعملية التصدير واعيد الضغط على زر التصدير مرة ثانية   ليعمل واحيانا اضطر الى ضغطه ثلاث مرات لان عملية التصدير تفشل .. ومن اجل حل المشكلة مؤقتا كتبت ضمن الكود
جملة GOTO التي لاأحبها وهي تجبر الكود على الاعادة من الاول حتى يتم التصدير
 وبسبب قلة خبرتي مع الاكسل ارفق لكم
الكود ليصار الى تصحيح الخلل مشكورين
اتعامل مع VB2008 و Office 2003 
كود :
 Private Sub Btn_ExToExcel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_ExToExcel.Click
       If dgv_table.Rows.Count = 0 Then
           Exit Sub
       Else
           System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
           System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
gg:
           Try
               Dim xlApp As New Application
               Dim excelworkBook As Microsoft.Office.Interop.Excel.Workbook = xlApp.Workbooks.Add
               Dim excelWorksheet As Microsoft.Office.Interop.Excel.Worksheet = CType(excelworkBook.Worksheets(1), Worksheet)
               xlApp.Visible = False
               Dim currCol As Integer = 1
               excelWorksheet.Cells.Select()
               excelWorksheet.Cells.Delete()
               For iC As Integer = 0 To dgv_table.Columns.Count - 1
                   If dgv_table.Columns(iC).Visible = True Then
                       excelWorksheet.Cells(1, currCol).Value = dgv_table.Columns(iC).HeaderText
                       currCol += 1
                   End If
               Next
               For i As Integer = 0 To dgv_table.RowCount - 1
                   currCol = 1
                   For j As Integer = 0 To dgv_table.Columns.Count - 1
                       If dgv_table.Columns(j).Visible = True Then
                           excelWorksheet.Cells(i + 2, currCol).value = dgv_table.Rows(i).Cells(j).FormattedValue
                           currCol += 1
                       End If
                   Next
               Next

               excelWorksheet.Rows("1:1").Font.FontStyle = "Normal"
               excelWorksheet.Rows("1:1").Font.Size = 10
               excelWorksheet.Cells.Columns.AutoFit()
               excelWorksheet.Cells.Select()
               excelWorksheet.Cells.EntireColumn.AutoFit()
               excelWorksheet.Cells(1, 1).Select()
               xlApp.Visible = True
           Catch ex As Exception
               GoTo gg ' اضطررت لاستخدام هذه العبارة وضحكت من نفسي على استخدامها
               'MsgBox("Export Excel Error " & ex.Message)
               MsgBox("فشلت عملية التصدير حاول مرة ثانية")
           Finally
               System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

           End Try
       End If
   End Sub

اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة:
#2
تفضل هذا المثال مختلف كليا عن الطريقة العادية للتصدير آمل أن ينال إعجابك و يحل مشكلتك .


الملفات المرفقة
.zip   TestExportDgvToExcel.zip (الحجم : 151.27 ك ب / التحميلات : 648)
.zip   ExportDgvToExcelVB2008.zip (الحجم : 148.9 ك ب / التحميلات : 529)
الرد }}}
#3
السلام عليكم اخي عاصم 
اتمنى ان تكون بصحة جيدة ونعمة وافرة 
شكرا على المثال وقم قمت بفتح الاكواد فقط قبل ان تقوم  بتحويل المثال الى 2008
ثم فتحت المثال 2008  تظهر فيه مشكلة الفتح في برنامج اكسل حيث رسالة خطأ واغلاق البرنامج
واذا حاولت فتح الملف المصدر ايضا يظهر خطأ وبغلق البرنامج ربما من نسخة الاوفيس  
شيئ آخر اعتقد ان الجدول كتب بلغة html !!!! ام انا مخطئ لان هذه اللغة لا افهمها 
ان كان بالامكان مثال صغير مع قاعدة بيانات access  وداتا غرايد والتصدير يكون اما من الداتا غرايد او الداتا تابل
او ان تجرب الكود الذي كتبته انا وتفحص اماكن الخلل
شكرا لك ولمساهمتك التي تزيد في ميزان حسناتك دمت بخير اخي عاصم
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد }}}
تم الشكر بواسطة: asemshahen5
#4
وضعت لك مثال مصمم ب 2008 به قاعدة بيانات و داتا غريد كما طلبت عدلت المشاركة الأولى و وضعت به ما طلبت الغ خاصية AllowUserToAddRows=false من الجدول تحل المشكلة أو عدل في لوب المديول و اجعله -2 بدل -1 تحل المشكلة أيضا .
الرد }}}
تم الشكر بواسطة: ابراهيم ايبو , elgokr


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف يمكن تصدير ascx كملف dll justforit 1 141 06-12-25, 12:33 AM
آخر رد: salamandal
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 842 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 799 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,265 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,028 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  بطء في جلب البيانات مصمم هاوي 9 1,009 08-05-25, 07:51 AM
آخر رد: مصمم هاوي
  تعديل كود تحديث البيانات مصمم هاوي 1 790 26-04-25, 06:07 PM
آخر رد: مصمم هاوي
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 703 26-04-25, 12:24 AM
آخر رد: الدريساوي
  مساعدة في طريقة تحميل الفيديوهات المخزنة في قاعدة البيانات foad8920 0 665 24-04-25, 12:58 PM
آخر رد: foad8920
  إغلاق الفورم مع حذف جميع البيانات الموجودة به صالح عبدالله 10 1,047 19-04-25, 08:54 PM
آخر رد: Kamil

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


يقوم بقرائة الموضوع: