UserNam3
UserNam3

Reputation: 655

c# Add text in word (docx) and apply styles

I am looking to add text to a Word document by separating the title from the text. When adding the title, I would like to apply the proper styling.

Here is what I did :

 private void Add_Text_To_Word()
    {

        string file_location = @"D:\Bureau\my_word.docx";
        string my_title = "TITLE TITLE TITLE";
        string my_text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";


        Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
        Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(file_location);
        app.Visible = true;

        object missing = System.Reflection.Missing.Value;
        object oEndOfDoc = "\\endofdoc"; // endofdoc is a predefined bookmark



        int page = 0;
        while (page < 3) // For 3 pages (1 title + 1 text + 1 page break)
        {

            object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
                                         
            Word.Range rngEndOfDoc = doc.Bookmarks[oEndOfDoc].Range;
            rngEndOfDoc.InsertAfter("\n");
            rngEndOfDoc.Collapse(ref oCollapseEnd);
            rngEndOfDoc.Text = my_title;              
            rngEndOfDoc.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);

            doc.Paragraphs.Add(rngEndOfDoc);


            Word.Range rngEndOfDoc2 = doc.Bookmarks[oEndOfDoc].Range;
            rngEndOfDoc.InsertAfter("\n");
            rngEndOfDoc.Collapse(ref oCollapseEnd);
            rngEndOfDoc2.Text = Environment.NewLine + my_text;
            rngEndOfDoc2.set_Style(Word.WdBuiltinStyle.wdStyleBodyText);

            doc.Paragraphs.Add(rngEndOfDoc2);


            doc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak);

            page++;
        } // -------------------------

    }

Here is the result :

Result

But this is what I want to do :

Wanted

Ty for your help !

Upvotes: 1

Views: 171

Answers (1)

UserNam3
UserNam3

Reputation: 655

There is the solution :

       // Title
            Word.Paragraph oPara2;
            object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
            oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
            oPara2.Range.Text = title;
            oPara2.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);

            oPara2.Range.InsertParagraphAfter();

            // Text
            Word.Paragraph oPara3;
            oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
            oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);
            oPara3.Range.Text = text;
            oPara3.set_Style(Word.WdBuiltinStyle.wdStyleBodyText);

            oPara3.Range.InsertParagraphAfter();

            // Page break
            oDoc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak);

I have to set the style after the text.

This is not working :

  // Title
            Word.Paragraph oPara2;
            object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
            oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
            oPara2.set_Style(Word.WdBuiltinStyle.wdStyleHeading1);
            oPara2.Range.Text = title;

            oPara2.Range.InsertParagraphAfter();

Upvotes: 1

Related Questions