I want to add a section break at the end of the document and add some text.
My code is as below:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
namespace WordDocManipulation
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\sample.docx";
            string strtxt = "Hello This is done by programmatically";      
           OpenAndAddTextToWordDocument(path,strtxt);
        }
        public static void OpenAndAddTextToWordDocument(string filepath, string txt)
        {
            /* I want to the below text to be added in the new section */ 
            // Open a WordprocessingDocument for editing using the filepath.
            WordprocessingDocument wordprocessingDocument =
                WordprocessingDocument.Open(filepath, true);
            // Assign a reference to the existing document body.
            Body body = wordprocessingDocument.MainDocumentPart.Document.Body;
            // Add new text.
            Paragraph para = body.AppendChild(new Paragraph());
            Run run = para.AppendChild(new Run());
            run.AppendChild(new Text(txt));
            // Close the handle explicitly.
            wordprocessingDocument.Close();
        }
    }
}
What should I do?
You need to add the section break to the section properties. You then need to append the section properties to the paragraph properties. Followed by appending the paragraph properties to a paragraph.
        Paragraph paragraph232 = new Paragraph();
        ParagraphProperties paragraphProperties220 = new ParagraphProperties();
        SectionProperties sectionProperties1 = new SectionProperties();
        SectionType sectionType1 = new SectionType(){ Val = SectionMarkValues.NextPage };
        sectionProperties1.Append(sectionType1);
        paragraphProperties220.Append(sectionProperties1);
        paragraph232.Append(paragraphProperties220);
The resulting Open XML is:
  <w:p>
    <w:pPr>
      <w:sectPr>
        <w:type w:val="nextPage" />
      </w:sectPr>
    </w:pPr>
  </w:p>
If you create a Word document that looks the way you want the result to look, then open in it in the Open XML Productivity Tool, you can reflect the code and see what C# code would generate the various Open XML elements you are trying to achieve.
First you need to create a break paragraph
Paragraph PageBreakParagraph = new Paragraph(new DocumentFormat.OpenXml.Wordprocessing.Run(new DocumentFormat.OpenXml.Wordprocessing.Break() { Type = BreakValues.Page }));
Then you need to append the paragraph
wordprocessingDocument.MainDocumentPart.Document.Body.Append(PageBreakParagraph)
You can also specify where to insert it, if you don't want to append it to the end by using the InsertAfter and InsertBefore methods
wordprocessingDocument.MainDocumentPart.Document.Body.InsertAfter(PageBreakParagraph, ReferenceElement);
wordprocessingDocument.MainDocumentPart.Document.Body.InsertBefore(PageBreakParagraph, ReferenceElement);
Edit:
This adds a page break not a section break.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With