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

كيفية التحويل من DataSet إلى Excel

مغلق
بدأه obarahmeh في 17 أغسطس 2006 · 19 رد · 2,078 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم

هل يوجد أحد قام بتجربة تحويل البيانات من أل DataSet إلى Excel

لقد قمت بتنزيل كود و لكن لم ينجح في التحويل, هل من أحد قام بتجربة الموضوع؟؟؟؟

مع الشكر

:huh:

#2

هذا اجراء يقوم بتحويل DataTable الى ملف Excel

	Private Sub Export2MSExcel(ByVal T As DataTable)

		Dim ExcelApp As Excel.Application = New Excel.Application()
		Dim Workbooks As Excel.Workbooks = ExcelApp.Workbooks
		Dim Workbook As Excel.Workbook = Workbooks.Add(System.Reflection.Missing.Value)
		Dim Sheets As Excel.Sheets = Workbook.Sheets

		Dim Worksheet As Excel.Worksheet = Sheets("Sheet1")

		Dim RowsCount As Integer = T.Rows.Count
		Dim ColsCount As Integer = T.Columns.Count

		Dim ColsCounter As Integer
		Dim RowsCounter As Integer

		'Columns Header
		For ColsCounter = 0 To ColsCount - 1
			Worksheet.Cells(1, ColsCounter + 1) = T.Columns(ColsCounter).ColumnName.ToString
			'First Row for Columns Header
		Next

		For RowsCounter = 0 To RowsCount - 1
			For ColsCounter = 0 To ColsCount - 1
				Worksheet.Cells(RowsCounter + 2, ColsCounter + 1) = T.Rows(RowsCounter)(ColsCounter)
				'Start With the Second Row Because First Row for Columns Header
			Next
		Next

		ExcelApp.Visible = True
		ExcelApp.UserControl = True

	End Sub

ملاحظة يجب اضافة Reference لل Excel ، من Add Reference اختار COM ومن ثم Microsoft Excel 11.0 Object Library

#3

Error_while_Exporting_To_Excel.docتحية لك اخ عبد الباسط

لكن الكود لم ينجح في التحويل و يظهر لي مسج عن المشكلة

و المسج عن المشكلة وضعتلك اياها في الملف المرفق لعلك تجد لي حلا لها

و لك جزيل الشكر و التقدير

#4

الظاهر لي ان المشكة من اصدارة ال MS Excel

انا الاصدارة العندي 2003، مجرب عليها الكود وشغال تمام.

#5

توجد طريقة لاتحتاج إلى استخدام COM ولا إلى وجود إكسل اصلاً على الجهاز، ويمكن استخدامها حتى في ASP.NET لتمكين المستخدم من تحميل البيانات على جهازه بهيئة إكسل.

كنت قد وضحت تلك الطريقة في منتدى ASP.NET وهي باختصار عبارة عن إنشاء ملف html عبارة عن جدول ويتم ملء الجدول ببيانات ال Data set ثم يتم حفظ الملف باستخدام xls كامتداد (extention) وبالتالي يمكن فتح هذا الملف في إكسل كأي ملف إكسل عادي.

محمد حمود

ماجستير تقنية المعلومات

بكالوريوس هندسة مدنية

محترف إدارة مشاريع (PMP)

مهندس جودة البرمجيات (CSQE)

مبرمج معتمد من مايكروسوفت (MCP)

متخصص في نظم المعلومات الجغرافية GIS

mohamed.hammod(at)gmail.com

www.ShapeViewer.com

#6

يا سلام لو نبحث شوية عالنت هنعمل أحلي شغل والله بس الكسل وحش قوي :P

مش محتاجه لوجود اكسل عالجهاز غالبا , وببلاش كمان ياه عالدلع :D

GemBox.Spreadsheet Free

تم تعديل هذه المشاركة بواسطة hazzoom في 17 أغسطس 2006 في 20:14

#7

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

الى الأخوة محمد حمود و Hazzoom الرجاء توضيح أفكاركم بالنسبة للتحويل بيانات ال DataSet إلى إكسل دون الحاجة الى وجود الإكسل على الجهاز

#8

السلام عليكم

   DataSet.WriteXml("c:\waleedhm.xls")

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#9

أخى الفاضل ،،،

أكتب الكود الذي تحدث عنده المشكلة

وماهو منطوق رسالة الخطأ

#10

السلام عليكم

يا جماعة لغاية الآن ما زبط معي التحويل من ال Data Set إلى Excel

انا استعملت الكود اللي وضعه الأخ عبد الباسط فوق بس ما زبط....و المسج اللي بتظهلا المشكلة انا وضعتها فوق في أحد ردودي (مشاركة رقم 3)...يا ريت لو حد يساعدني في الموضوع...مهم جدا يا جماعة

#12

يمكنك استعمال الكريستال ريبورت او الريبورت العادي المرفق مع الفيجوال 2005 وفيه توجد خاصية لتصدير البيانات المعروضة في التقرير الى اكسل او بي دي اف او وورد وغيرها...

#13
اقتباس
تحية لك اخ عبد الباسط

لكن الكود لم ينجح في التحويل و يظهر لي مسج عن المشكلة

و المسج عن المشكلة وضعتلك اياها في الملف المرفق لعلك تجد لي حلا لها

و لك جزيل الشكر و التقدير

هذا هو كود البرنامج ، ومرفق معه ملفات ال DLLs المطلوبة والتي ربما كانت غير متوفرة في جهازك

Export2MsExcel.rar

تم تعديل هذه المشاركة بواسطة abd_albaset في 22 أغسطس 2006 في 11:34

#14
waleedhm كتب:
السلام عليكم

   DataSet.WriteXml("c:\waleedhm.xls")

السلام عليكم

هذا الكود DataSet.WriteXml("c:\waleedhm.xls")

يظهر الخطأ التالي:

An unhandled exception of type 'System.NullReferenceException' occurred in Data_Bank_New.exe

Additional information: Object reference not set to an instance of an object.

hazzoom كتب:
يا سلام لو نبحث شوية عالنت هنعمل أحلي شغل والله بس الكسل وحش قوي :P

مش محتاجه لوجود اكسل عالجهاز غالبا , وببلاش كمان ياه عالدلع :D

GemBox.Spreadsheet Free

سلام عليكم

اخي Hazzoom أنا قمت بتحميل ال Component الذي تحدثت عنه و لكن يوجد في الموقع الكثير من الكودات التي تعالج جميع مشاكل التحويل من و الى الاكسل

هل انت قمت بتجربة كود من الموجودات و الذي يحول ال DataSet إلى Excel

اذا قمت بعمل التحويل المطلوب الرجاء منك أن تدلني عليه

مع الشكر لجميع الأخوة

#15

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

بالنسبه لكتابة البيانات من Dataset الي Excel Sheet فليس بالضرورة أن يكون عبارة عن Method تقوم بالتحويل ولكن يمكنك عمل 2 Loops علي جدول معين في الـ Dataset (الـ Loop الأولي علي الـ Columns والثانية علي الـ Rows أو العكس تخير أيهما أفضل لتحصل علي القيمة المفردة) ثم ضع القيمة في الـ Excel Sheet Cells عن طريق الـ GemBox Component , جرب الطريقة دي وقلي النتيجة , مستنيك ;)

*اوعي تزعل من كلمة "بس الكسل وحش قوي " بهزر معاك :D

#16
hazzoom كتب:
السلام عليكم ورحمة الله وبركاته

بالنسبه لكتابة البيانات من Dataset الي Excel Sheet فليس بالضرورة أن يكون عبارة عن Method تقوم بالتحويل ولكن يمكنك عمل 2 Loops علي جدول معين في الـ Dataset (الـ Loop الأولي علي الـ Columns والثانية علي الـ Rows أو العكس تخير أيهما أفضل لتحصل علي القيمة المفردة) ثم ضع القيمة في الـ Excel Sheet Cells عن طريق الـ GemBox Component , جرب الطريقة دي وقلي النتيجة , مستنيك ;)

*اوعي تزعل من كلمة "بس الكسل وحش قوي " بهزر معاك :D

صباح الخير اخ Hazzoom

طبعا معلوم انه طريقة التحويل يجب ان يكون فيها 2 loops مثل ما تفضلت حضرتك و صدقني انا جربت كل شيء لكن للأسف لم أنجح

انا قربت أتعقد من الموضوع لأنه ما زبطش معي :( :( :(

انا مطلوب مني اسلّم المشروع الأسبوع الجاي و للسه آخر حاجة في الشروع و اللي هي التحويل لإكسل مش زابطة معي و صرلها اسبوعين بحاول فيها و عالفاضي.

ملاحظة: انا ما ازعلش من الناس الطيبين امثالك و لو شو ما قالو باشا

#17

هل جربت البرنامج اللذي ارفقته في مشاركتي الاخيرة.

#18
abd_albaset كتب:
هل جربت البرنامج اللذي ارفقته في مشاركتي الاخيرة.

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

Old Format................etc

مع العلم ان نسخة ال اكسل عندي هي 2003 و لقد اضفت ال Components التش تحدثت عنها حضرتك لكن كمان لم تنجح العملية مش عارف ليه

#19

السلام عليكم

بص يا سيدي بعد ما هتقوم بتنصيب الـ GemBox Component , قم باضافه الـ Reference الخاص بها الي المشروع , تمام لحد هنا ؟

وبعد كده اعمل مثلا Method فيها الـ 2 Loops اللي هتجيب بيها القيم من الجدول الموجود في الـ Dataset وآدي طريقة أستخدام الـ Component لاضافة القيم الي Excel Sheet ومنها الي Excel File.xls :

 Dim _ExcelFile As New GemBox.Spreadsheet.ExcelFile
		Dim _ExcelSheet As GemBox.Spreadsheet.ExcelWorksheet = _ExcelFile.Worksheets.Add("sheet1")
		_ExcelSheet.Cells(0, 0).Value = "Wow, You did it !!!"
		_ExcelFile.SaveXls("OutPutFile.xls")

ورد علي , وان شاء الله المره دي خير , وتسلم مشروعك :D

#20

سلام عليكم

بالنسبة لموضوع التحويل يا جماعة...كل اللي تفضلتو فيه و اقترحتو عليه اعمله انا جربته و ما زبطش... و أنا بآخر فترة طرحت المشكلة هذه على منتديات اجنبية و بالآخر توصلت لسبب المشكلة حسب ما هم قالولي طبعا و حسب ما أنا اقتنعت بوجهة نظرهم و اللي هي:

انه في مشكلة عندي في الكود تدعى Late Binding و اللي هي حسب ما انا فاهم تعني ربط القيم التي تدخل في ملف أل Exce فيما بعد و هي هنا تعني Late Binding و للتذكير فإن الكود الذي استخدمه حاليا و الذي توجد فيه ال Late Binding هو:

Dim ExcelApp As Excel.Application = New Excel.Application

Dim Workbooks As Excel.Workbooks = ExcelApp.Workbooks

Dim Workbook As Excel.Workbook = Workbooks.Add(System.Reflection.Missing.Value)

Dim Sheets As Excel.Sheets = Workbook.Sheets

Dim Worksheet As Excel.Worksheet = Sheets("Sheet1")

Dim RowsCount As Integer = tblname.Rows.Count

Dim ColsCount As Integer = tblname.Columns.Count

Dim ColsCounter As Integer

Dim RowsCounter As Integer

'Columns Header

For ColsCounter = 0 To ColsCount - 1

Worksheet.Cells(1, ColsCounter + 1) = tblname.Columns(ColsCounter).ColumnName.ToString

'First Row for Columns Header

Next

For RowsCounter = 0 To RowsCount - 1

For ColsCounter = 0 To ColsCount - 1

Worksheet.Cells(RowsCounter + 2, ColsCounter + 1) = tblname.Rows(RowsCounter)(ColsCounter)

'Start With the Second Row Because First Row for Columns Header

Next

Next

ExcelApp.Visible = True

ExcelApp.UserControl = True

هل يوجد أي حدا ممكن يفيد بالموضوع هذا...

و شكرا جزيلا لكم

الرجاء المساعدة...لأنه الموضوع مهم

هذا الموضوع مغلق.

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