تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طباعة بيانات موجودة في برنامج على ( 2003 Microsoft Office Word )
#1
حصرياً ( إطبع على الوورد من خلال برنامجك ) ( شرح بالص[b]كاتب الموضوع : عبدالله الدوسري


[/b]
السلام عليكم ورحمة الله وبركاتة ،،،،





هل تحب ان تقوم بعرض و طباعة بيانات موجودة في برنامج على ( 2003 Microsoft Office Word ) أو ( 2007 Microsoft Office Word )

أود أن أنوة أنني بحثت كثيراً في الإنترنت ولم أجد أكواد أو مشروع يقوم بتسهيل عملية نقل البيانات إلى ( Microsoft Office Word )

لذلك صممت هذا الكود ( بالـــ Visual Studio 2008 ) ليستفيد الجميع





بسم الله نبداء في شرح هذة الطريقة









أولا : 



تصميم قالب الوورد



http://vb4arb.com/vb/uploaded/18_01349253775.jpg



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



الطريقة : أفتح ( Microsoft Office Word ) 

في هذا الشرح إستخدمة Microsoft Office Word 2003







قم بإظهار الخيارات التالية لسهولة التحرير في القالب :





1 - من القائمة : أدوات --> خيارات -->التبويب عرض --> في المجموعة ( إظهار )

قم بوض علامة صح على الخيار : إشارات مرجعية ( هذا الخيار لتكون قادر على رؤية العلامات المرجعية التي سوف نتعامل معها لاحقاً ) أثناء التحرير

http://vb4arb.com/vb/uploaded/18_01349253796.jpg







2 - ( إذا كنت تريد عمل جداول ) من القائمة : جدول --> ( تفعيل الخيار : إظهار خطوط الشبكة ) / ( هذا الخيار لإظهار خطوط الجدول المخفية )

http://vb4arb.com/vb/uploaded/18_01349253816.jpg







قم بتصميم القالب على شكل النموذج الذي تريدة

هذة صورة لشكل قالب قمت بتصميمة كمثال



شكل القالب أثناء التحرير

لاحظ ظهور خطوط الجدول (رقم 1) + ظهور خطوط رأس الجدول ( رقم 2 و 3 )

[/url]http://vb4arb.com/vb/uploaded/18_01349253946.jpg







شكل القالب أثناء عرض الطباعة

لاحظ إختفاء الخطوط المخفية في الجداول + إختفاء الإشارات المرجعية

http://vb4arb.com/vb/uploaded/18_11349253946.jpg







انصح ( وبشدة ) على وضع البيانات في جداول ( أقصد البيانات المفردة ) مثل الصورة التالية

http://vb4arb.com/vb/uploaded/18_21349253946.jpg

بإمكانك وضع البيانات المفردة في جداول وإخفاء حدود الجدول حسب رغبة







تعريف ( بالإشارة المرجعية ) وكيفية إضافتها في مكان محدد

الإشارة المرجعية لا تكون ظاهر في الطباعة أو معاينة الطباعة ( فقط أثناء التحرير )

http://vb4arb.com/vb/uploaded/18_31349253946.jpg









طريقة إضافة الإشارة المرجعية

تقوم بوضع المؤشر في المكان الذي ترغب بوضع الإشارة فية ثم تذهب إلى

قائمة الوورد --> إدراج --> إشارة مرجعية...

سيفتح معك نافذة إضافة الإشارات المرجعية

قم بكتابة إسم الإشارة المرجعية ( يفضل باللغة الإنجليزية ) 

ثم إضغط على زر إضافة سيتم إدراج الإشارة المرجعية في المكان الذي حددتة

انظر إلى الصورة التالية

http://vb4arb.com/vb/uploaded/18_41349253946.jpg











الآن سأتكلم قليلاً عن إظافة جدول في المستند سيتم تعبئة عن طريق برنامجك

http://vb4arb.com/vb/uploaded/18_51349253946.jpg

ملاحظات :

----

رأس الجدول مطلوب إظافتة + الإشارة المرجعية الخاصة بة

( السبب : من خلال الكود في البرنامج أقوم بالسؤال عن الإشارة المرجعية الخاصة برأس الجدول )

لإمكانية إزالتة إذا كانت البيانات الناتجة من البرنامج لهذا الجدول لا ترجع أي شيء ( يعني لا توجد بيانات ) 

بالإضافة إلى ترتيب الجدول إذا كان يمتد على طول أكثر من صفحة في المستند ( سأعود إلى هذة النقطة لاحقاً )









رؤوس الأعمدة مطلوبة

( السبب : إذا امتد الجدول على أكثر من صفحة يتم نسخ (رأس الجدول + رؤوس الأعمد ) 

ولصقها في بداية كل صفحة مع إضافة كلمة ( تابع : ....... ) على النص الموجود في رأس الجدول

http://vb4arb.com/vb/uploaded/18_61349253946.jpg







حقول الجدول مطلوبة ( يجب إضافة أول سطر فقط + وضع إشارة مرجعية في أول حقل ) 

وهي الإشارة التي تدل على بداية الكتابة في الجدول

(بغض النظر عن الحقل الأول إذا كان ترقيم متسلسل أو بيانات مختلفة)

لاحظ هذة الصور للدلالة على أهمية وضع الإشارة المرجعية في أول حقل من السطر الأول

http://vb4arb.com/vb/uploaded/18_71349253946.jpg







الخلاصة ( لإظافة جدول لازم تظيف 3 أشياء [ رأس الجدول مع الإشارة + رؤوس الأعمدة + أول سطر في الجدول مع الإشارة في أول حقل ] )

كما في الصورة التالية

http://vb4arb.com/vb/uploaded/18_81349253946.jpg



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









بعد أن تنتهي من تصميم القالب قم بحفظ الملف على شكل قالب

http://vb4arb.com/vb/uploaded/18_01349254065.jpg


الآن أصبح القالب جاهز للإستعمالور
ثانياً : ننتقل إلى ( الكود )

وفي هذا الشرح استخدمة ( Visual Studio 2008 )



في البداية اريد ان أقول ان الكود الذي كتبتة موجود في ملف واحد وأسمة ( MSWordPrintingSession.vb )

وهو عبارة عن ( عدة كلاسات [ Classes ] مدمج معها نافذة [ Form ] تبين تقدم الطباعة ) 

و الكلاس الذي سوف نتعامل معه هو ( WordPrintingSession ) فقط وهو المتكفل بالعملية كلها

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





بسم الله نبداء



عن طريق مشروعك ( الــ Project ) قم بإظافة ( المراجع - References ) الخاصة بالوورد 

وهي ( Microsoft Word 11.0 Object Library ) كما في الصورة :

http://vb4arb.com/vb/uploaded/18_01349254117.jpg





بعد الإنتهاء من إظافة المراجع ( المراجع - References ) نقوم بإظافة الملف ( MSWordPrintingSession.vb ) إلى مشروعك أو برنامجك 

طبعاً عن طريق ( Add Existing Item ) أو الضغظ على ( Ctrl+D ) .

http://vb4arb.com/vb/uploaded/18_01349254147.jpg

ملف الكلاس لوحدة فقط بدون المشروع

MSWordPrintingSession Calss File











إيظاً بإمكانك إظافة ملف القالب الخاص بالوورد ( قالب الطباعة الذي صممناه من قبل )

إلى [ الــ Resources ] ( الموارد أو المصادر الخاصة بمشروعك أو برنامجك )

لأنة توجد طريقتين لطلب الملف الخاص بالطباعة ( إما أن يكون في القرص الصلب وعن طريق الكود تضع مسار الملف فقط )

أو أن يكون الملف موجود في الــ ( Resources ) 

وعن طريق الكود تضع ( بيانات الملف على شكل [ ()Byte ] + اسم الملف [ "Template.dot" ] )

http://vb4arb.com/vb/uploaded/18_01349254168.jpg



الآن سأشرح عملية إظافة الكود



لنفترض على سبيل المثال ( زر عند الضغط علية يقوم بعملية الطباعة أو بمعاينة قبل الطباعة )

سأقوم بالشرح داخل الحدث ( الــ Event ) الخاص بالضغط على الزر وهو الحدث ( PrintButton_Click )






الكود سيكون كالتالي داخل الحدث: PrintButton_Click
-----------------------------------------------------------------------------------

Private Sub PrintButton_Click(ByVal sender As System.Object, ByVal e 

As System.EventArgs) Handles PrintButton.Click 




1

إنشاء متغير جديد من نوع WordPrintingSession
Dim MSPrintSession As New WordPrintingSession





2

'-- هذا الأمر لتشغيل برنامج الوورد + التأكد من ملف قالب الطباعة
'-- توجد طريقتين
----------
الأولى
جلب ملف قالب الطباعة من الـ Resources على شكل بايتات + إعطاء إسم لهذا الملف 
If Not MSPrintSession.StartUp(My.Resources.TestPrintingTable,"MyTestTemplate1"

Then Exit Sub
----------
الثانية
إعطاء المسار الخاص بملف الطباعة من القرص الصلب
If Not MSPrintSession.StartUp("C:\WordTemplates\MyTestTemplate1.dot"Then Exit Sub












3

إنشاء متغير جديد من نوع WordPrintingSession.PrintJob
يتم إظافة جميع البيانات التي تود طباعتها في المتغير MyPrintJob
Dim MyPrintJob As New WordPrintingSession.PrintJob








4

في هذة المرحلة سيتم إظافة البيانات في المتغير MyPrintJob





AddText إظافة نص
----------------------------------------
سيتم إظافة النص في المكان الذي وضعة فيه الـ Bookmark
لإظافة نص في مكان محدد في مستند الطباعة بدلالة الـ Bookmark
إستخدم الطريقه AddText 
http://vb4arb.com/vb/uploaded/18_01349254183.jpg


كود:
           MyPrintJob.AddText("ســ 32 ـنة", "Old")
           
MyPrintJob.AddText("186", "Height")
           
MyPrintJob.AddText("82", "Weight")
           
MyPrintJob.AddText("متزوج", "MaritalStatus")
           
MyPrintJob.AddText("مهندس إتصالات", "Job")
           
MyPrintJob.AddText("شركة في الأحلام للإتصالات الدولية", "JobPlace")
           
MyPrintJob.AddText("+0123456789", "PhoneNumber")  

'









AddImage إظافة صورة
----------------------------------------
MyPrintJob.AddImage(My.Resources.Personalphoto, "Personalphoto", _
New WordPrintingSession.ImageMaximumSize(130, 130), _
. Word.WdLineStyle.wdLineStyleThinThickSmallGap, _
. Word.WdColor.wdColorBlack, _
. Word.WdLineWidth.wdLineWidth300pt)
http://vb4arb.com/vb/uploaded/18_01349254205.jpg


أو بإمكانة وضع الصورة بدون إيطار وبدون تقييد في الحجم والإستغناء عن باقي البراميترز
MyPrintJob.AddImage(My.Resources.Personalphoto, "Personalphoto")















AddTable إظافة جدول 
----------------------------------------

عند إظافة جدول نحتاج إلى عمل متغير جديد من نوع 
WordPrintingSession.Table.ColumnOrder
الهدف منه لمعرفة الأعمدة المراد نقل البيانات منها
على سبيل المثال جدول يحتوي على 10 أعمدة في قاعدة البيانات
وأنت لا تحتاج إلى لأربعة فقط أو خمسة من هذة الأعمدة
ولا تريد إظهار الأعمدة الأخرى والتي تخص الرقم المسلسل
أو بعض الحقول التي تستخدمها لأغراض آخرى

نقوم الآن بعمل المتغير والتعريف بالأعمدة المطلوبة للطباعة فقط
Dim Tbl_ColmnOrder As New WordPrintingSession.Table.ColumnOrder
الآن نقوم بتعريف الأعمدة داخل هذا المتغير
مهم جداً إظافة الأعمد بالترتيب لأنها ستنقل إلى مستند الطباعة بنفس بالترتيب





لإظافة عامود يحتوي على بيانات نصية
Tbl_ColmnOrder.AddTextColumn("EmployeeName")
EmployeeName هو اسم العامود في الجدول في قاعدة البيانات 





إذا كنت لا تريد إظافة بيانات في العامود فستخدم
()Tbl_ColmnOrder.AddEmptyColumn
http://vb4arb.com/vb/uploaded/18_01349254223.jpg
إستخدم هذة الطريقة مع مراعات تسلسل الترتيب للعامود الذي تريدة خالياً من البيانات









لإظافة عامود يعتوي على صورة هناك طريقتان
----------
1 - لإظافة عامود يحتوي على صورة محفوظة على شكل بايتات
Tbl_ColmnOrder.AddImageColumn("EmployeePhoto", _
WordPrintingSession.Table.ColumnOrder.ColumnImageS ourceType.FromBytesArray, _
New WordPrintingSession.ImageMaximumSize(24, 24), _
Word.WdLineStyle.wdLineStyleNone, _
Word.WdColor.wdColorBlack, _
Word.WdLineWidth.wdLineWidth600pt)
-----------
2 - لإظافة عامود يحتوي على نص مسار الصورة في القرص الصلب
Tbl_ColmnOrder.AddImageColumn("EmployeePhoto", _
WordPrintingSession.Table.ColumnOrder.ColumnImageS ourceType.FromFilePathString, _
New WordPrintingSession.ImageMaximumSize(24, 24), _
Word.WdLineStyle.wdLineStyleNone, _
Word.WdColor.wdColorBlack, _
Word.WdLineWidth.wdLineWidth600pt) 
------------
الفرق بين الطريقتين هو البراميتر الثاني وهو يحدد نوع مصدر الصور
WordPrintingSession.Table.ColumnOrder.ColumnImageS ourceType.FromBytesArray 

WordPrintingSession.Table.ColumnOrder.ColumnImageS ourceType.FromFilePathString






بعد التعريف بالأعمدة
الآن نقوم بإظافة الجدول + المتغير الخاص بتعريف الأعمدة لهذا الجدول
MyPrintJob.AddTable(EmployeeTable, _ <------ System.Data.DataTable الجدول من نوع
Tbl_ColmnOrder, _ <------ المتغير الخاص بتعريف الأعمدة
"EmployeeTable_Head_BookmarkName", _ <----- الموجود في رأس الجدول Bookmark اسم الــ
"EmployeeTable_FirstRow_BookmarkName", _ <----- الموجود في أول حقل من السطر الأول Bookmark اسم الــ
True) <----- إذا أردت ترقيم العامود الأول True

لاحظ الصورة
لترقيم العامود الأول فقط ضع True 
فقط إذا قمت بتصميم الجدول على أساس أن يكون العامود الأول للترقيم 
http://vb4arb.com/vb/uploaded/18_01349254237.jpg
إذا كان العامود الأول ليس للترقيم ضع False 
لاحظ الصورة
http://vb4arb.com/vb/uploaded/18_01349255010.jpg





بإمكانك إظافة أكثر من جدول بهذة الطريقة
تعريف الأعمدة ثم إظافة الجدول











لحذف الجدول الموجود في مستند الطباعة
إذا لم تتوفر بيانات لنقلها فية استخدم الطريقة
MyPrintJob.DeleteTable("EmployeeTable_Head_BookmarkName")






-----------
في النهاية قم بنداء هذا الأمر لبداء نقل البيانات
وإرسال ( التمغير MyPrintJob الذي أدخلنا فية جميع البيانات الرماد طباعتها ) في البراميتر
MSPrintSession.RepairPrintJob(MyPrintJob, WordPrintingSession.PrintingMode.PrintPrevew)

للعرض قبل الطباعة
WordPrintingSession.PrintingMode.PrintPrevew 
للطباعة مباشرتاً
WordPrintingSession.PrintingMode.PrintOut 
----------


إنتهاء إظافة الكود الخاص بالطباعة

End Sub

----------










وهذه صور لمثال مرفق مع المشروع



نافذة تحتوي على بيانات سنقوم بإرسالها إلى الوورد

http://vb4arb.com/vb/uploaded/18_11349255010.jpg



نافذة تبين التقدم

http://vb4arb.com/vb/uploaded/18_21349255010.jpg



عرض البيانات في الوورد أثناء العرض قبل الطباعة

[url=http://vb4arb.com/vb/uploaded/18_31349255010.jpg]http://vb4arb.com/vb/uploaded/18_31349255010.jpg







هذا ملف المشروع ( صمم بواسطة ) Visual Studio 2008

MSOfficePrinting Project source code - UpDate 2009-07-08









آخر تحديث 2009/08/07

تم تصحيح بعض الأخطاء ,,









أنتهى الموضوع

تحياتي لكم جميعاً وأي أستفسار أنا حاظر

أتمنى تستفيدون منة


تحياتي لكم )
(( يَا أَيَّتُهَا النَّفْسُ الْمُطْمَئِنَّةُ ارْجِعِي إِلَى رَبِّكِ رَاضِيَةً مَرْضِيَّةً فَادْخُلِي فِي عِبَادِي وَادْخُلِي جَنَّتِي ))

الرد }}}
تم الشكر بواسطة:
#2
اخي الكريم عبدالله

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

على هذا الشرح الرائع
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  طباعة الداتاقريد Print DataGridView ابو ليلى 9 14,006 11-01-23, 11:24 AM
آخر رد: tofayas
  كيف تتعامل مع برنامج الإكسيل من برنامجك rinawi 7 6,628 12-11-22, 12:11 AM
آخر رد: خالد العصاوي
  نظرة على DropBox SDK و التعامل معها +برنامج رفع و تحميل ملفات ابو ليلى 4 4,871 08-09-22, 11:54 AM
آخر رد: saif2023
  برنامج مبيعات ومشتريات وإدارة أعمال ( الفاتورة الإلكترونية ) yassoo1985 2 2,246 04-06-22, 01:14 PM
آخر رد: yassoo1985
Heart طلب برنامج Advanced Installer أبو خالد الشكري 0 1,418 16-05-22, 09:12 PM
آخر رد: أبو خالد الشكري
  أهم طرق إدارة المخازن وتطبيقها على برنامج مخازن وارد ومنصرف Menna ahmeed 0 1,967 27-04-22, 12:52 PM
آخر رد: Menna ahmeed
  [شرح] اتصال بقاعدة بيانات اكسيس , اضافة بيان , تعديل بيان , حذف بيان , عرض البيانات . ahmed salam 25 38,229 23-02-22, 06:04 PM
آخر رد: رضوان الجماعي
  طريقة إنشاء برنامج طباعة ملصقات الباركود ملهمـ 1 4,398 22-12-21, 05:09 PM
آخر رد: alessam4pro
  قراءة رقم من ضمن سلسلة ارقام موجودة في الحقل عبدالكريم برشدان 2 1,566 06-11-21, 11:20 PM
آخر رد: عبدالكريم برشدان
Heart [VB.NET] برنامج ادارة المطاعم و الكافيهات mgr21002100 6 6,653 14-01-21, 07:59 PM
آخر رد: abarrak

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


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