كيفية أتمتة Microsoft Word لإنشاء مستند جديد باستخدام Visual C #

للحصول على إصدار Microsoft Visual Basic.NET من هذه المقالة، راجع
316383 .
للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع
313193 .

ملخص

توضح هذه المقالة خطوة بخطوة كيفية إنشاء مستند جديد في Microsoft Word باستخدام التنفيذ التلقائي من Microsoft Visual C# 2005 أو Microsoft Visual C#.NET.

نموذج لتعليمة برمجية

يوضح نموذج التعليمة البرمجية في هذه المقالة كيفية القيام بما يلي:
  • إدراج الفقرات مع النص والتنسيق.
  • استعراض وتعديل مختلف النطاقات ضمن مستند.
  • إدراج الجداول وتنسيق جداول ملء الجداول بالبيانات.
  • إضافة تخطيط.
لإنشاء مستند Word جديد باستخدام التنفيذ التلقائي من 2005 Visual C# أو Visual C#.NET، اتبع الخطوات التالية:
  1. بدء تشغيل Microsoft Visual Studio 2005 أو Microsoft Visual Studio. NET.
  2. من القائمة ملف ، انقر فوق جديد، ومن ثم انقر فوق المشروع. ضمن أنواع المشاريع، انقر فوق مشاريع Visual C#، ومن ثم انقر فوق تطبيق Windows ضمن قوالب. يتم إنشاء Form1 افتراضياً.

    ملاحظة: في Visual Studio 2005، انقر فوق Visual C# بدلاً من مشاريع Visual C#.
  3. إضافة مرجع إلى مكتبة كائنات Microsoft Word. للقيام بذلك، اتبع الخطوات التالية:
    1. من القائمة ' مشروع '، انقر فوق إضافة مرجع.
    2. ضمن علامة التبويب " COM "، تحديد موقع مكتبة كائنات Microsoft Wordومن ثم انقر فوق تحديد.

      ملاحظة: في Visual Studio 2005، لم تكن النقر
      حدد.
      ملاحظة: يتضمن Microsoft Office 2003 "تجميعات التوافق الأساسية" (PIAs). Microsoft Office XP لا يتضمن تقييمات التنفيذ الأولية، ولكن يمكن تنزيلها.
      لمزيد من المعلومات حول Office XP PIAs، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":
      معلومات 328912 : Microsoft Office XP PIAs متوفرة للتنزيل

    3. انقر فوق "موافق" في مربع الحوار إضافة مراجع لقبول التحديدات. إذا تم مطالبتك بإنشاء wrappers للمكتبات التي قمت بتحديدها، انقر فوق نعم.
  4. من القائمة عرض ، حدد مربع الأدوات لعرض مربع الأدوات ثم قم بإضافة زر إلى Form1.
  5. انقر نقراً مزدوجاً فوق Button1. يظهر إطار التعليمات البرمجية للنموذج.
  6. في إطار التعليمات البرمجية، استبدل التعليمة البرمجية التالية
    private void button1_Click(object sender, System.EventArgs e){
    }

    بواسطة:
    private void button1_Click(object sender, System.EventArgs e){
    object oMissing = System.Reflection.Missing.Value;
    object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */

    //Start Word and create a new document.
    Word._Application oWord;
    Word._Document oDoc;
    oWord = new Word.Application();
    oWord.Visible = true;
    oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    ref oMissing, ref oMissing);

    //Insert a paragraph at the beginning of the document.
    Word.Paragraph oPara1;
    oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
    oPara1.Range.Text = "Heading 1";
    oPara1.Range.Font.Bold = 1;
    oPara1.Format.SpaceAfter = 24; //24 pt spacing after paragraph.
    oPara1.Range.InsertParagraphAfter();

    //Insert a paragraph at the end of the document.
    Word.Paragraph oPara2;
    object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
    oPara2.Range.Text = "Heading 2";
    oPara2.Format.SpaceAfter = 6;
    oPara2.Range.InsertParagraphAfter();

    //Insert another paragraph.
    Word.Paragraph oPara3;
    oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);
    oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:";
    oPara3.Range.Font.Bold = 0;
    oPara3.Format.SpaceAfter = 24;
    oPara3.Range.InsertParagraphAfter();

    //Insert a 3 x 5 table, fill it with data, and make the first row
    //bold and italic.
    Word.Table oTable;
    Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);
    oTable.Range.ParagraphFormat.SpaceAfter = 6;
    int r, c;
    string strText;
    for(r = 1; r <= 3; r++)
    for(c = 1; c <= 5; c++)
    {
    strText = "r" + r + "c" + c;
    oTable.Cell(r, c).Range.Text = strText;
    }
    oTable.Rows[1].Range.Font.Bold = 1;
    oTable.Rows[1].Range.Font.Italic = 1;

    //Add some text after the table.
    Word.Paragraph oPara4;
    oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oPara4 = oDoc.Content.Paragraphs.Add(ref oRng);
    oPara4.Range.InsertParagraphBefore();
    oPara4.Range.Text = "And here's another table:";
    oPara4.Format.SpaceAfter = 24;
    oPara4.Range.InsertParagraphAfter();

    //Insert a 5 x 2 table, fill it with data, and change the column widths.
    wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing);
    oTable.Range.ParagraphFormat.SpaceAfter = 6;
    for(r = 1; r <= 5; r++)
    for(c = 1; c <= 2; c++)
    {
    strText = "r" + r + "c" + c;
    oTable.Cell(r, c).Range.Text = strText;
    }
    oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2
    oTable.Columns[2].Width = oWord.InchesToPoints(3);

    //Keep inserting text. When you get to 7 inches from top of the
    //document, insert a hard page break.
    object oPos;
    double dPos = oWord.InchesToPoints(7);
    oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();
    do
    {
    wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    wrdRng.ParagraphFormat.SpaceAfter = 6;
    wrdRng.InsertAfter("A line of text");
    wrdRng.InsertParagraphAfter();
    oPos = wrdRng.get_Information
    (Word.WdInformation.wdVerticalPositionRelativeToPage);
    }
    while(dPos >= Convert.ToDouble(oPos));
    object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
    object oPageBreak = Word.WdBreakType.wdPageBreak;
    wrdRng.Collapse(ref oCollapseEnd);
    wrdRng.InsertBreak(ref oPageBreak);
    wrdRng.Collapse(ref oCollapseEnd);
    wrdRng.InsertAfter("We're now on page 2. Here's my chart:");
    wrdRng.InsertParagraphAfter();

    //Insert a chart.
    Word.InlineShape oShape;
    object oClassType = "MSGraph.Chart.8";
    wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing,
    ref oMissing, ref oMissing, ref oMissing,
    ref oMissing, ref oMissing, ref oMissing);

    //Demonstrate use of late bound oChart and oChartApp objects to
    //manipulate the chart object with MSGraph.
    object oChart;
    object oChartApp;
    oChart = oShape.OLEFormat.Object;
    oChartApp = oChart.GetType().InvokeMember("Application",
    BindingFlags.GetProperty, null, oChart, null);

    //Change the chart type to Line.
    object[] Parameters = new Object[1];
    Parameters[0] = 4; //xlLine = 4
    oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty,
    null, oChart, Parameters);

    //Update the chart image and quit MSGraph.
    oChartApp.GetType().InvokeMember("Update",
    BindingFlags.InvokeMethod, null, oChartApp, null);
    oChartApp.GetType().InvokeMember("Quit",
    BindingFlags.InvokeMethod, null, oChartApp, null);
    //... If desired, you can proceed from here using the Microsoft Graph
    //Object model on the oChart and oChartApp objects to make additional
    //changes to the chart.

    //Set the width of the chart.
    oShape.Width = oWord.InchesToPoints(6.25f);
    oShape.Height = oWord.InchesToPoints(3.57f);

    //Add text after the chart.
    wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    wrdRng.InsertParagraphAfter();
    wrdRng.InsertAfter("THE END.");

    //Close this form.
    this.Close();
    }

  7. قم بالتمرير إلى الجزء العلوي من إطار التعليمات البرمجية. أضف السطر التالي إلى نهاية قائمة توجيهات باستخدام :
    using Word = Microsoft.Office.Interop.Word;using System.Reflection;

  8. اضغط F5 لإنشاء وتشغيل البرنامج.
  9. انقر فوق Button1 أتمتة Word لبد ولإنشاء المستند.
بعد اكتمال التعليمات البرمجية، فحص المستند الذي تم إنشاؤه لك. يحتوي المستند على صفحتين من فقرات منسقة وجداول تخطيط.

استخدام قالب

إذا كنت تستخدم أتمتة لإنشاء المستندات الموجودة في شكل موحد، يمكنك الاستفادة من بدء العملية باستخدام مستند جديد استناداً إلى قالب المنسقة مسبقاً. استخدام قالب مع عميل أتمتة Word ميزتين كبيرة عبر إنشاء مستند من أي شيء:
  • أن سيطرة أكبر على تنسيق ووضع الكائنات في المستندات الخاصة بك.
  • يمكنك إنشاء المستندات الخاصة بك باستخدام تعليمات برمجية أقل.
باستخدام قالب، يمكنك يمكن ضبط موضع الجداول والفقرات والكائنات الأخرى في المستند، بالإضافة تضمين تنسيق على هذه الكائنات. باستخدام "التنفيذ التلقائي"، يمكنك إنشاء مستند جديد استناداً إلى القالب الخاص بك باستخدام التعليمات البرمجية كما يلي:
object oTemplate = "c:\\MyTemplate.dot";oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
ref oMissing, ref oMissing);

في القالب الخاص بك، يمكنك تحديد الإشارات المرجعية حيث أن عميل التنفيذ التلقائي الخاص بك يمكن تعبئة نص متغير في مكان محدد في المستند، كما يلي:
object oBookMark = "MyBookmark";oDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";

ميزة أخرى لاستخدام قالب هي أنه يمكنك إنشاء وتخزين أنماط التنسيق الذي تريد تطبيقه في وقت التشغيل، كما يلي:
object oStyleName = "MyStyle";oDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);

-أو-
object oStyleName = "MyStyle";oWord.Selection.set_Style(ref oStyleName);

المراجع

لمزيد من المعلومات، انقر فوق أرقام المقالات التالية لعرضها في "قاعدة معارف Microsoft":
301659 HOWTO: أتمتة Microsoft Word لتنفيذ دمج المراسلات من Visual C#.NET

302902 HOWTO: ربط لخوادم التنفيذ التلقائي Office باستخدام Visual C#.NET

لمزيد من المعلومات، قم بزيارة مواقع ويب شبكة مطوري Microsoft (MSDN) التالية:
تطوير Microsoft Office باستخدام Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

كلمة في المكتب (مقالة MSDN على إنترنت)
http://msdn2.microsoft.com/en-us/library/aa201330(office.11).aspx

كلمة إضافية واحدة (مقالة MSDN على إنترنت)
http://msdn2.microsoft.com/en-us/library/aa201332(office.11).aspx
خصائص

رقم الموضوع: 316384 - آخر مراجعة: 19‏/01‏/2017 - المراجعة: 1

تعليقات