Τρόπος αυτοματοποίησης του 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 χρησιμοποιώντας αυτοματοποίηση από Visual C# 2005 ή 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 περιλαμβάνει κύρια διαλειτουργικότητα (PIA). Microsoft Office XP δεν περιλαμβάνει στοιχεία PIA, αλλά μπορούν να τις λάβουν.
      Για περισσότερες πληροφορίες σχετικά με τα στοιχεία PIA του Office XP, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft:
      328912 ΠΛΗΡΟΦΟΡΙΕΣ: στοιχεία PIA του Microsoft Office XP είναι διαθέσιμο για λήψη

    3. Κάντε κλικ στο κουμπί OK στο πλαίσιο διαλόγου " Προσθήκη αναφορών " για να αποδεχτείτε τις επιλογές σας. Εάν σας ζητηθεί να δημιουργήσετε προγράμματα εξομοίωσης για τις βιβλιοθήκες που επιλέξατε, κάντε κλικ στο κουμπί " Ναι".
  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 ΔΙΑΔΙΚΑΣΙΕΣ: αυτοματοποίηση του Microsoft Word για να εκτελέσετε συγχώνευση αλληλογραφίας από το Visual C# .NET

302902 ΔΙΑΔΙΚΑΣΙΕΣ: σύνδεση για διακομιστές αυτοματοποίησης του Office με Visual C# .NET

Για περισσότερες πληροφορίες, επισκεφθείτε τις ακόλουθες τοποθεσίες του Microsoft Developer Network (MSDN) στο Web:
Ανάπτυξη του Microsoft Office με το Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Το Word στο γραφείο (MSDN Online άρθρο)
http://msdn2.microsoft.com/en-us/library/aa201330(office.11).aspx

Μία λέξη περισσότερες (MSDN Online άρθρο)
http://msdn2.microsoft.com/en-us/library/aa201332(office.11).aspx
Ιδιότητες

Αναγνωριστικό άρθρου: 316384 - Τελευταία αναθεώρηση: 16 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια