السّلام عليكم و رحمة الله و بركاته
إخواني الأفاضل ..
جمعة طيّبة و مباركة للجميع إن شاء الله
كيف يمكن تصدير بيانات الجريد كنترول إلى الإكسل
بصراحة بحثت كثيرَا لكنّي لم أجد ضالتي
لديّ هذا الكود و الذي أستعمله عادةً في تصدير بيانات الداتا جريد فيو العاديّة و يشتغل بامتياز
حاولت التغيير فيه قليلاً ليتماشى مع الجريد كنترول الخاص بالديف إكسبرس
لكن للأسف كل محاولاتي باءت بالفشل
و الإشكالية بهذا السّطر من الكود ..
كود :
.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
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
و بارك الله في الجميع
تحياتي
أسلوب أداة DevExpress يختلف عن أسلوب أداة ميكروسوفت
PHP كود :
.Cells(I + 2, j + 1).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 GridView, excelfilename As String)
فيصبح مناداة الإجراء كالتالي
PHP كود :
Export_GridView_Express_Excel(GridView1, "C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة")
ولا تنسى أن تحذف اسم الملف داخل الإجراء وتكتب بدلا منه excelfilename مثل
PHP كود :
ElseIf Not Directory.Exists(excelfilename) Then
Directory.CreateDirectory(excelfilename)
بالنسبة لأسماء رؤوس الأعمده
PHP كود :
.Cells(1, iC + 1).Value = st.Columns.Item(iC).GetTextCaption
السّلام عليكم و رحمة الله و بركاته
تسلم أخي الكريم الغاالي " جميل " و سلم يمينك و دينك إن شاء الله
و الله أخي الحبيب ..حاولت تطبيق كل ما ذكرته حسب معرفتي المتواضعة
الآن .. أصبحت رسالة الخطأ هذه التي تظهر .. يتم خلق المجلد لكن بدون ملف الإكسل
الرجاء .. بعد إذنك أخي الغالي إلقاء نظرة على كامل الكود المستعمل
كود :
Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
Export_GridView_Express_Excel(GridView1, "C:\وثيقة الإكسل لموكّلي و موكّلات مكتب المحاماة")
End Sub
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
تحياتي
تم تعديل الكود،
PHP كود :
.Cells(I + 2, j + 1).value = st.GetDataRow(I).Item(j)
أعتقد الخطأ السابق بسبب أن GridView1 مرتبط بالبيانات.
بالنسبة لأسماء رؤوس الأعمده
PHP كود :
.Cells(1, iC + 1).Value = st.Columns.Item(iC).GetTextCaption
لا تستخدم Try إلا بعد نجاح تجربة الكود بدون أخطاء
السّلام عليكم و رحمة الله و بركاته
و الله أخي الكريم " جميل " لا أعرف كيف أشكرك و كيف أرد جميلك و جميل أعمالك
لأنّ هذا المشكل سبّب لي صداعا منقطع النظير
و جاء الخلاص من عند شخصك الكريم
إلهي ينعم عليك بطيّبات الدنيا و الآخرة
و يحسن إليك مثلما أحسنت إليّ بهذا الدعم و الحل أكثر من الرائع
كلّه تمام مئة بالمئة .. زادك الله من فضله و علمه و نفع بك المتعلّمين أمثالي و زادها بموازين حسناتك إن شاء الله
تحياتي و تقييماتي
بتمنى الإطلاع على هذا الفيديو، كتبتوا أكواد كتير الله يعطيكم العافية، بس الموضوع بالـ Devexpress لايحتاج هذا الكم من الجهد.