الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تصدير البيانات من Datagridview To Excel

بدأه mmsalman87 في 16 مايو 2009 · 27 رد · 11,425 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

وضعت هذا الكود لتصدير البيانات من داتا غريد فيو الى اكسل ولكن واجهتني مشكلة بسيطة وهي تصديره لاسماء الاعمدة بدون البيانات

ما السبب ؟؟؟؟؟؟؟؟

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
        Dim xlApp As Object
        Dim xlWb As Object
        Dim xlWs As Object

        Dim data(1)() 'two dimension array
        Dim fldCount As Integer
        Dim recCount As Long
        Dim iCol As Integer
        Dim iRow As Integer

        ' Create an instance of Excel and add a workbook
        xlApp = CreateObject("Excel.Application")
        xlWb = xlApp.Workbooks.Add
        xlWs = xlWb.Worksheets("Sheet1")

        ' Copy field names to the first row of the worksheet
        fldCount = DataGridViewX1.ColumnCount
        ReDim data(0)(fldCount)
        For iCol = 1 To fldCount
            xlWs.Cells(1, iCol).Value = DataGridViewX1.Columns(iCol - 1).HeaderText
        Next

        ' Copy data to the rest rows of the worksheet
        recCount = DataGridViewX1.Rows.Count
        For iRow = 2 To recCount


            For iCol = 1 To fldCount
                data(0)(iCol - 1) = Me.DataGridViewX1.Rows(iRow - 1).Cells(iCol - 1).Value
            Next
            xlWs.Range(xlWs.Cells(iRow, 1), xlWs.Cells(iRow, iCol - 1)).Value = data(0)


        Next

        ' Auto-fit the column widths and row heights
        xlApp.Selection.CurrentRegion.Columns.AutoFit()
        xlApp.Selection.CurrentRegion.Rows.AutoFit()

        ' Display Excel and give user control of Excel's lifetime
        xlApp.Visible = True
        xlApp.UserControl = True

        ' Release Excel references
        xlWs = Nothing
        xlWb = Nothing
        xlApp = Nothing

Maher Salman

Senior Oracle Developer

Oracle Certified Professional

Kuwait

اللهم إني أعوذ بك من الهم والغم والحزن،

وأعوذ بك من العجز والكسل والفشل،

وأعوذ بك من الجبن والبخل،

وأعوذ بك من الكفر والفقر،

وأعوذ بك من غلبة الدين وقهر الرجال

#2

أخى انا مبتدئ جدا فى البرمجة و بدرس سى شارب اصلا :D

بس هحاول اساعد

وجدت هذا الكود و على ما اعتقد هتجد فيه ما تريد

الكود فى المرفق

طلب صغير لو زبط معاك تقوللى عشان انا بخلص مشروع تخرجى بالفيجوال بيزيك و خاصية مثل التصدير الى اكسل هتبقى كويسة

خالص تحياتى

DocDatabaseToExcel.zip

#3

الاخ الفاضل dvd_Besoo

لا استطيع مراسلتك علي الخاص انظر الصورة

اذا قمت باضافتي لقائمة الاصدقاء فقم بازالتي مرة اخري او تحري الامر ربما منعتني عن مراسلتك بدون قصد

post-46243-1242529551_thumb.jpg

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

الاخوة الافاضل

السلام عليكم ورحمة الله وبركاتة

مرفق لكم مثال عن طريقة تصدير البيانات من خلال آداه DataGridView الي برنامج Excel

post-46243-1242551139_thumb.jpg

بالتوفيق للجميع

Export_To_Excel.rar

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 17 مايو 2009 في 13:14

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#5

اخواني الكرام مشكورين ولكن انا الكود اللي انا كتبتو فوق شغال 100/100

ولكن المشكلة انه يأتي بكل السجلات ماعدا السجل الاول

وهذه هي المشكلة الان لماذا يصدر كل الصفوف عدا الصف الاول

؟؟؟؟؟؟؟؟؟

Maher Salman

Senior Oracle Developer

Oracle Certified Professional

Kuwait

اللهم إني أعوذ بك من الهم والغم والحزن،

وأعوذ بك من العجز والكسل والفشل،

وأعوذ بك من الجبن والبخل،

وأعوذ بك من الكفر والفقر،

وأعوذ بك من غلبة الدين وقهر الرجال

#6

هل المثال المرفق لا يفي بالغرض

عموما

ضع لنا مثال لكي نستطيع تتبع المشكلة ومحاولة حلها

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#7

مثالك المرفق يعطيني رسالة خطأ على السطر التالي :

xlWorkSheet.Cells(i + 1, j + 1) = _

والخطأ هو :

Expression is a value and therefore cannot be the target of an assignment

علما انني ضفت excel references

Maher Salman

Senior Oracle Developer

Oracle Certified Professional

Kuwait

اللهم إني أعوذ بك من الهم والغم والحزن،

وأعوذ بك من العجز والكسل والفشل،

وأعوذ بك من الجبن والبخل،

وأعوذ بك من الكفر والفقر،

وأعوذ بك من غلبة الدين وقهر الرجال

#8

أخي الفاضل

mmsalman87

المثال يعمل بصورة طبيعية 100/100 وبدون اي مشاكل

شاهد المرفق جيداً وتأكد من انك قد اضفت المكتبة الصحيحة لتشغيل المثال

Export_From_DGV_To_Excel_By_Vedio.rar

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#9

اخي الكريم عندما ليست موجودة عندي هذه المكتبة علما انني استخدم اوفيس 2007

موجود عندي نسخة اخرى ولكن يعطيني عليها خطأ عند اضافتها ما الحل هل اقوم بتنزيل اوفيس 2003 مثلا ؟

Maher Salman

Senior Oracle Developer

Oracle Certified Professional

Kuwait

اللهم إني أعوذ بك من الهم والغم والحزن،

وأعوذ بك من العجز والكسل والفشل،

وأعوذ بك من الجبن والبخل،

وأعوذ بك من الكفر والفقر،

وأعوذ بك من غلبة الدين وقهر الرجال

#10

أنا عندي اوفيس 2007 و المثال شغال 100 / 100

سأحاول ارفاق المكتبة

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#11

نسيت شيئاً لا بد أن تقوم بتنصيب Visual Studio Tools for Office (VSTO)

حتى تتمكن من استخدام مميزات Microsoft Office من الفيجوال ستوديو

هذا رابط من الـ MSDN عن هذه الادوات:

http://msdn.microsoft.com/en-us/library/d2tx7z6d(VS.80).aspx

روابط التحميل :

1. Microsoft Visual Studio 2005 Tools for Office Second Edition Runtime (VSTO 2005 SE) (x86)

و هذه موجهة خصيصاً للـ Office 2007 الرابط السابق أيضاً يتعامل الـ Office 2007

لكن هذه موجه بالتحديد إلى الاصدار 2007 و يمكن أيضاً أن تتعامل مع الاصدارات السابقة .

2. Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System

أما مثال الاخ محمد فؤاد فهو يعمل ربما ينقصك هذه المكتبات لكي تستطيع فتحه .

تم تعديل هذه المشاركة بواسطة COMFORT في 18 مايو 2009 في 14:14

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#13

جارى تحميل ((Visual Studio Tools for Office)) و شكرا عزيزى Comfort على الفيديو و انا متأكد من ان المثال يعمل ان شاء الله

جازاكم الله كل خير يا اخوانى

#14

قم بتحميل المكتبة المرفقة

ثم قم باضافتها كما هو موضح بالصورة

post-46243-1242649670_thumb.jpg

Microsoft.Office.Interop.Excel.rar

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 18 مايو 2009 في 15:30 — السبب: تنسيق

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#15
dvd_besoo كتب:
جارى تحميل ((Visual Studio Tools for Office)) و شكرا عزيزى Comfort على الفيديو و انا متأكد من ان المثال يعمل ان شاء الله

جازاكم الله كل خير يا اخوانى

عفواً .و لكن الأخ محمد فؤاد هو من رفع الفيديو .

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#16

يعطيني الخطأ التالي :

Imports alias 'Excel' conflicts with 'Namespace Excel' declared in the root namespace.

شو الحل نزلت كل المكتبات اللي بعرفها عن الاوفيس

علما انني استخدم اوفيس 2007 ودوت نت 2005

Maher Salman

Senior Oracle Developer

Oracle Certified Professional

Kuwait

اللهم إني أعوذ بك من الهم والغم والحزن،

وأعوذ بك من العجز والكسل والفشل،

وأعوذ بك من الجبن والبخل،

وأعوذ بك من الكفر والفقر،

وأعوذ بك من غلبة الدين وقهر الرجال

#17

حط هذا الكود وراح يشتغل حلاوه معاك

Dim thisThread As System.Threading.Thread = System.Threading.Thread.CurrentThread
		Dim originalCulture As System.Globalization.CultureInfo = thisThread.CurrentCulture
		thisThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")
Logo_460_60.gif
#18

بالنسبة لاضافة الهيدر الخاص بالداتا قريد

ضيف هذا في حلقة التكرار

				xlWorkSheet.Cells(j + 1) = DataGridView1.Columns(j).HeaderText

ليصبح هكذا

For i = 0 To DataGridView1.RowCount - 2
			For j = 0 To DataGridView1.ColumnCount - 1
				xlWorkSheet.Cells(j + 1) = DataGridView1.Columns(j).HeaderText
				xlWorkSheet.Cells(i + 1, j + 1) = DataGridView1(j, i).Value.ToString()
			Next
		Next

أيضا بدلا من وضع ملف الاكسل دائما في مسار محدد لم لا تجعل المستخدم مكان اختيار حفظ الملف

قم باضافة اداة save file dialigeمن toolbox

وأضف هذا الكود

بعد عملية التكرار مباشرة

Dim strFileName As String
		Dim saveFileDialog1 As New SaveFileDialog()

		saveFileDialog1.Filter = "Excel workbook (*.xlsx)|*.xlsx"
		saveFileDialog1.FilterIndex = 2
		saveFileDialog1.RestoreDirectory = True
		If saveFileDialog1.ShowDialog() = DialogResult.OK Then
			strFileName = saveFileDialog1.FileName
		Else
			Exit Sub
		End If
		xlWorkSheet.SaveAs(strFileName)
		xlWorkBook.Close()
		xlApp.Quit()

تم تعديل هذه المشاركة بواسطة fhmi في 28 مايو 2009 في 14:09

Logo_460_60.gif
#19

السلام عليكم ...

أضن أن كود الأخ سليمان كان صحيح و لكن ينقصه تعديل بسط

System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
		Dim xlApp As Object
		Dim xlWb As Object
		Dim xlWs As Object

		Dim data(1)() 'two dimension array
		Dim fldCount As Integer
		Dim recCount As Long
		Dim iCol As Integer
		Dim iRow As Integer

		' Create an instance of Excel and add a workbook
		xlApp = CreateObject("Excel.Application")
		xlWb = xlApp.Workbooks.Add
		xlWs = xlWb.Worksheets("Sheet1")

		' Copy field names to the first row of the worksheet
		fldCount = DataGridView1.ColumnCount
		ReDim data(0)(fldCount)

		For iCol = 1 To fldCount
			xlWs.Cells(1, iCol).Value = DataGridView1.Columns(iCol - 1).HeaderText
		Next

		' Copy data to the rest rows of the worksheet
		recCount = DataGridView1.Rows.Count
		For iRow = 2 To recCount


			For iCol = 1 To fldCount
				data(0)(iCol - 1) = Me.DataGridView1.Rows(iRow - 1).Cells(iCol - 1).Value
			Next
			xlWs.Range(xlWs.Cells(iRow, 1), xlWs.Cells(iRow, iCol - 1)).Value = data(0)


		Next

		' Auto-fit the column widths and row heights
		xlApp.Selection.CurrentRegion.Columns.AutoFit()
		xlApp.Selection.CurrentRegion.Rows.AutoFit()

		' Display Excel and give user control of Excel's lifetime
		xlApp.Visible = True
		xlApp.UserControl = True

		' Release Excel references
		xlWs = Nothing
		xlWb = Nothing
		xlApp = Nothing
#20

السلام عليكــم ورحمـة الله وبركاتــه ،،

أخواني جربت ماقمتم به ولكن وجدت مشكلة دائما تحصل معي وهي

ملخصة بهذه الصورة

post-65690-1244342231_thumb.png

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#21

الاخ الفاضل

فلسطيننا

هل واجهة ويندوز لديك Windows Interface بلغة مختلفة غير اللغة الانجليزية؟

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#22

لا أخي الكريم

اللغة المعتمدة لدي هي اللغة الانجليزية

مع العلم ان البرنامج الذي قمت بأرفاقه يعمل لدي 100%

ولكنه الكود حينما قمت بأضافته في البرنامج الخاص بي لم يعمل

ربما انني استخدم الاصدار 2008 من vs.net

الله أعلم وأعلى

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#23

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

وقد ارفقت مثال يوضح ذلك

exportToexcel.rar

تم تعديل هذه المشاركة بواسطة فلسطيننا في 7 يونيو 2009 في 18:26

رَبِّ لَا تَذَرْنِي فَرْداً وَأَنتَ خَيْرُ الْوَارِثِينَ

#24

مشكور على المثال شغاااااااااااااااااااااااااااال 100 لل 100

#25
mmsalman87 كتب:
اخواني الكرام مشكورين ولكن انا الكود اللي انا كتبتو فوق شغال 100/100

ولكن المشكلة انه يأتي بكل السجلات ماعدا السجل الاول

وهذه هي المشكلة الان لماذا يصدر كل الصفوف عدا الصف الاول

؟؟؟؟؟؟؟؟؟

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

والتعديل كان في حلقة تكرار قراءة القريد

واشكر صاحب الموضوع على الكود الذي ساعدني في برنامجي :lol:

		   System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture("en-US")
		   Dim xlApp As Object
		   Dim xlWb As Object
		   Dim xlWs As Object

		   Dim data(1)() 'two dimension array
		   Dim fldCount As Integer
		   Dim recCount As Long
		   Dim iCol As Integer
		   Dim iRow As Integer

		   ' Create an instance of Excel and add a workbook
		   xlApp = CreateObject("Excel.Application")
		   xlWb = xlApp.Workbooks.Add
		   xlWs = xlWb.Worksheets("Sheet1")

		   ' Copy field names to the first row of the worksheet
		   fldCount = DataGridView1.ColumnCount
		   ReDim data(0)(fldCount)

		   xlWs.Cells(1, 3).Value = "عنوان التقرير"

		   For iCol = 1 To fldCount
			   xlWs.Cells(2, iCol).Value = DataGridView1.Columns(iCol - 1).HeaderText
		   Next

		   ' Copy data to the rest rows of the worksheet
		   recCount = DataGridView1.Rows.Count + 1
		   For iRow = 3 To recCount


			   For iCol = 1 To fldCount
				   data(0)(iCol - 1) = Me.DataGridView1.Rows(iRow - 2).Cells(iCol - 1).Value
			   Next
			   xlWs.Range(xlWs.Cells(iRow, 1), xlWs.Cells(iRow, iCol - 1)).Value = data(0)


		   Next

		   ' Auto-fit the column widths and row heights
		   xlApp.Selection.CurrentRegion.Columns.AutoFit()
		   xlApp.Selection.CurrentRegion.Rows.AutoFit()

		   ' Display Excel and give user control of Excel's lifetime
		   xlApp.Visible = True
		   xlApp.UserControl = True

		   ' Release Excel references
		   xlWs = Nothing
		   xlWb = Nothing
		   xlApp = Nothing

مواضيع مشابهة