تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[ تمّ الحل ] : تصدير بيانات الجريد كنترول إلى الإكسل
#1
السّلام عليكم و رحمة الله و بركاته
إخواني الأفاضل ..
جمعة طيّبة و مباركة للجميع إن شاء الله
كيف يمكن تصدير بيانات الجريد كنترول إلى الإكسل
بصراحة بحثت كثيرَا لكنّي لم أجد ضالتي
لديّ هذا الكود و الذي أستعمله عادةً في تصدير بيانات الداتا جريد فيو العاديّة و يشتغل بامتياز
حاولت التغيير فيه قليلاً ليتماشى مع الجريد كنترول الخاص بالديف إكسبرس
لكن للأسف كل محاولاتي باءت بالفشل
و الإشكالية بهذا السّطر من الكود ..
كود :
  .Cells(I + 2, j + 1).value = st.Rows(I).Cells(j).Value

كحل تحايلي مبدئي موقّت ..
قمت بإضافة داتاجريد عادية مخفيّة
و يتم التّصدير إلى الإكسل من خلالها
فالرّجاء ممّن لديهم فكرة .. المساعدة لوجه الله
أو حتّى طريقة أخرى للتّصدير
الكود المستعمل :
كود :
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Export_GridView_Express_Excel(GridView1)
   End Sub
   Private Sub Export_GridView_Express_Excel(ByVal st As Object)
       If GridView1.RowCount = Nothing Then
           XtraMessageBox.Show("المعذرة .. لا توجد بيانات لتصديرها إلى ملف الإكسل" & vbCrLf & "الرّجاء التأكد من جلب البيانات على شبكة العرض", "", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Exit Sub
       ElseIf ((GridView1.Columns.Count = 0) Or (GridView1.RowCount = 0)) Then
           Exit Sub
       ElseIf Not Directory.Exists("C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة") Then
           Directory.CreateDirectory("C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة")
       Else
           Dim rowsTotal, colsTotal As Short
           Dim I, j, iC As Short
           System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
           Dim xlApp As New Excel.Application
           Try
               Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add
               Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
               xlApp.Visible = False
               rowsTotal = st.RowCount
               colsTotal = st.Columns.Count - 1
               With excelWorksheet
                   .Cells.Select()
                   .Cells.Delete()
                   For iC = 0 To colsTotal
                       .Cells(1, iC + 1).Value = st.Columns(iC).Caption
                   Next

                   For I = 0 To rowsTotal - 1
                       For j = 0 To colsTotal
                           .Cells(I + 2, j + 1).value = st.Rows(I).Cells(j).Value
                       Next j
                   Next I

                   .Rows("1:1").Style.Font.Name = "Times New Roman"
                   .Rows("1:1").Font.FontStyle = "Bold"
                   .Rows("1:1").Font.Size = 12
                   .Rows("1:1").Font.Color = Color.Red
                   .Columns.HorizontalAlignment = 3
                   .Cells(j + 1).ColumnWidth = 10
                   .Cells.Columns.AutoFit()
                   .Cells.Select()
                   .Cells.EntireColumn.AutoFit()
                   .Cells(1, 1).Select()

               End With
               excelWorksheet.SaveAs("C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة\DOCUMENT" & DateAndTime.Now.ToString("@dd-MM-yyyy@HH-mm-ss") & ".xlsx")
               MDIParent1.Snds.Play("Message B")
               MsgBox("تمّ تصدير البيانات إلى ملف الإكسل بنجاح")
               excelBook.Close()
               xlApp.Quit()
           Catch ex As Exception
               MessageBox.Show(ex.Message, "خطأ غير متوقّع", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Finally
               System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
               xlApp = Nothing
           End Try
       End If
   End Sub

و بارك الله في الجميع
تحياتي
الرد
تم الشكر بواسطة:
#2
أسلوب أداة DevExpress يختلف عن أسلوب أداة ميكروسوفت
PHP كود :
.Cells(21).value st.GetDataRow(I).Item(j

الأفضل أن يكون تعرف st في الروتين هو GridView وليس Object
وذلك من أجل أن تظهر لك الخصائص والتعريفات أثناء كتابة الكود لst
PHP كود :
Private Sub Export_GridView_Express_Excel(ByVal st As GridView

وبما أن الإجراء عام لا يرتبط بGridView محدد وإنما يرسل له مرجعها
قم بتغيير كلمات GridView1 الموجودة داخل الإجراء إلى st
مثل
PHP كود :
If GridView1.RowCount Nothing Then 
ليصبح هكذا
PHP كود :
If st.RowCount Nothing Then 
وهكذا

ويستحسن أن تضيف متغير اسم الملف مثل
PHP كود :
Private Sub Export_GridView_Express_Excel(ByVal st As GridViewexcelfilename As String
فيصبح مناداة الإجراء كالتالي
PHP كود :
Export_GridView_Express_Excel(GridView1"C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة"
ولا تنسى أن تحذف اسم الملف داخل الإجراء وتكتب بدلا منه excelfilename مثل
PHP كود :
ElseIf Not Directory.Exists(excelfilenameThen
    Directory
.CreateDirectory(excelfilename

بالنسبة لأسماء رؤوس الأعمده
PHP كود :
.Cells(1iC 1).Value st.Columns.Item(iC).GetTextCaption 
الرد
تم الشكر بواسطة: عبد العزيز البسكري
#3
السّلام عليكم و رحمة الله و بركاته
تسلم أخي الكريم الغاالي " جميل " و سلم يمينك و دينك إن شاء الله
و الله أخي الحبيب ..حاولت تطبيق كل ما ذكرته حسب معرفتي المتواضعة
الآن .. أصبحت رسالة الخطأ هذه التي تظهر .. يتم خلق المجلد لكن بدون ملف الإكسل
الرجاء  .. بعد إذنك أخي الغالي إلقاء نظرة على كامل الكود المستعمل
كود :
   Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
       Export_GridView_Express_Excel(GridView1, "C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة")
   End Sub
   Private Sub Export_GridView_Express_Excel(ByVal st As GridView, excelfilename As String)
       If st.RowCount = Nothing Then
           XtraMessageBox.Show("المعذرة .. لا توجد بيانات لتصديرها إلى ملف الإكسل" & vbCrLf & "الرّجاء التأكد من جلب البيانات على شبكة العرض", "", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Exit Sub
       ElseIf ((st.Columns.Count = 0) Or (st.RowCount = 0)) Then
           Exit Sub
       ElseIf Not Directory.Exists(excelfilename) Then
           Directory.CreateDirectory(excelfilename)
       Else
           Dim rowsTotal, colsTotal As Short
           Dim I, j, iC As Short
           System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
           Dim xlApp As New Excel.Application
           Try
               Dim excelBook As Excel.Workbook = xlApp.Workbooks.Add
               Dim excelWorksheet As Excel.Worksheet = CType(excelBook.Worksheets(1), Excel.Worksheet)
               xlApp.Visible = False
               rowsTotal = st.RowCount
               colsTotal = st.Columns.Count - 1
               With excelWorksheet
                   .Cells.Select()
                   .Cells.Delete()
                   For iC = 0 To colsTotal
                       .Cells(1, iC + 1).Value = st.Columns(iC).Caption
                   Next

                   For I = 0 To rowsTotal - 1
                       For j = 0 To colsTotal
                           '.Cells(I + 2, j + 1).value = st.Rows(I).Cells(j).Value
                           .Cells(I + 2, j + 1).value = st.GetRowCellValue(I, j).ToString
                       Next j
                   Next I

                   .Rows("1:1").Style.Font.Name = "Times New Roman"
                   .Rows("1:1").Font.FontStyle = "Bold"
                   .Rows("1:1").Font.Size = 12
                   .Rows("1:1").Font.Color = Color.Red
                   .Columns.HorizontalAlignment = 3
                   .Cells(j + 1).ColumnWidth = 10
                   .Cells.Columns.AutoFit()
                   .Cells.Select()
                   .Cells.EntireColumn.AutoFit()
                   .Cells(1, 1).Select()

                   excelWorksheet.Range("A2:T1000").Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Azure)
                   excelWorksheet.Range("A2", "T1000").Font.Bold = True
                   excelWorksheet.DisplayRightToLeft = True

                   excelWorksheet.Columns("A:A").ColumnWidth = 6
                   excelWorksheet.Columns("B:B").ColumnWidth = 9
                   excelWorksheet.Columns("C:C").ColumnWidth = 12
                   excelWorksheet.Columns("E:E").ColumnWidth = 20
                   excelWorksheet.Columns("F:F").ColumnWidth = 20
                   excelWorksheet.Columns("G:G").ColumnWidth = 14
                   excelWorksheet.Columns("R:R").ColumnWidth = 14

               End With
               excelWorksheet.SaveAs("C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة\DOCUMENT" & DateAndTime.Now.ToString("@dd-MM-yyyy@HH-mm-ss") & ".xlsx")
               MDIParent1.Snds.Play("Message B")
               MsgBox("تمّ تصدير البيانات إلى ملف الإكسل بنجاح")
               excelBook.Close()
               xlApp.Quit()
           Catch ex As Exception
               MessageBox.Show(ex.Message, "خطأ غير متوقّع", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Finally
               System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default
               xlApp = Nothing
           End Try
       End If

تحياتي
الرد
تم الشكر بواسطة: جميل3 , جميل3
#4
تم تعديل الكود،
PHP كود :
.Cells(21).value st.GetDataRow(I).Item(j

أعتقد الخطأ السابق بسبب أن GridView1 مرتبط بالبيانات.

بالنسبة لأسماء رؤوس الأعمده
PHP كود :
.Cells(1iC 1).Value st.Columns.Item(iC).GetTextCaption 

لا تستخدم Try إلا بعد نجاح تجربة الكود بدون أخطاء
الرد
تم الشكر بواسطة: عبد العزيز البسكري
#5
السّلام عليكم و رحمة الله و بركاته
و الله أخي الكريم " جميل " لا أعرف كيف أشكرك و كيف أرد جميلك و جميل أعمالك
لأنّ هذا المشكل سبّب لي صداعا منقطع النظير
و جاء الخلاص من عند شخصك الكريم
إلهي ينعم عليك بطيّبات الدنيا و الآخرة
و يحسن إليك مثلما أحسنت إليّ بهذا الدعم و الحل أكثر من الرائع
كلّه تمام مئة بالمئة .. زادك الله من فضله و علمه و نفع بك المتعلّمين أمثالي و زادها بموازين حسناتك إن شاء الله
تحياتي و تقييماتي
الرد
تم الشكر بواسطة: جميل3


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [ تمّ الحل ] : رجاء المساعدة بتحويل الكود الى الفيجوال نت عبد العزيز البسكري 2 139 06-01-20, 01:51 PM
آخر رد: عبد العزيز البسكري
  تفعيل الخاصّية : Scroll بالجريد كنترول عبد العزيز البسكري 3 120 06-01-20, 12:50 PM
آخر رد: عبد العزيز البسكري
  [ تمّ الحل ] : تمرير قيمة التاكست بكس كبارامتر للإكسترا ريبورت عبد العزيز البسكري 4 281 20-12-19, 02:15 AM
آخر رد: عبد العزيز البسكري
  [ تمّ الحل ] : إستفسار حول البارامتر الخاص بالإكسترا ريبورت عبد العزيز البسكري 8 245 19-12-19, 03:11 AM
آخر رد: عبد العزيز البسكري
  مجموع عمود بالجريد كنترول عبد العزيز البسكري 4 172 18-12-19, 11:22 AM
آخر رد: عبد العزيز البسكري
  [سؤال] كيفية نسخ بيانات من ملف اكسيل الي ديف اكسبريس داتا كونترول AymanRamadanSaad 0 355 28-06-19, 01:33 AM
آخر رد: AymanRamadanSaad
Video [درس فيديو] الدرس 63 (كيفية اظهار او قرائة بيانات سجلات الــGrid View الفرعيه بــControls اخري) Atef Bidier 2 1,105 29-11-17, 09:15 PM
آخر رد: محبه البرمجه
Video [درس فيديو] الدرس 64 (استعراض تفاصيل بيانات الفواتير بـGrid Control اخري بواسطة قيمة في الـText Atef Bidier 1 746 01-03-17, 08:00 PM
آخر رد: thevirus
Video [درس فيديو] الدرس 62 (كيفية اظهار او قرائة بيانات سجلات الــGrid Control بــControls اخري) Atef Bidier 3 875 24-02-17, 09:58 PM
آخر رد: Atef Bidier
Video [درس فيديو] الدرس 60 (شرح لطرق طباعة بيانات الفواتير و تفاصيلها بواسطة اداة الـGrid Control) Atef Bidier 0 679 20-02-17, 05:24 PM
آخر رد: Atef Bidier

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


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