How to create a DOCX document in C# and VB.Net

How to create a DOCX document in C# and VB.Net

Let's create a simple DOCX document with two paragraphs and some formatted text, like a shown on picture:

Simple DOCX document

Main steps

  1. Notice you are importing the SautinSoft.Document namespace.
    using SautinSoft.Document;
  2. First of all, let's create an instance of DocumentCore with the name dc.
    
    DocumentCore dc = new DocumentCore();
    
    DocumentCore is root class, it represents a document itself.
  3. Add a new Section into our document.
    
        Section section = new Section(dc);
        dc.Sections.Add(section);
    
    Section is a collection of Block elements that are grouped by a unify page properties concept and having specific headers and footers.
  4. Create a new instance of Paragraph with two Run elements and add it into the section.
    
        // Way 1: Add 1st paragraph.
        Paragraph par1 = new Paragraph(dc);
        par1.ParagraphFormat.Alignment = HorizontalAlignment.Center;
        section.Blocks.Add(par1);
    
        // Let's create a characterformat for text in the 1st paragraph.
        CharacterFormat cf = new CharacterFormat() { FontName = "Verdana", Size = 16, FontColor = Color.Orange };
    
        Run text1 = new Run(dc, "This is a first line in 1st paragraph!");
        text1.CharacterFormat = cf;
        par1.Inlines.Add(text1);
    
        // Let's add a line break into our paragraph.
        par1.Inlines.Add(new SpecialCharacter(dc, SpecialCharacterType.LineBreak));
    
        Run text2 = text1.Clone();
        text2.Text = "Let's type a second line.";
        par1.Inlines.Add(text2);
    
    Paragraph is a Block derived element used to group Inline elements like a Run, Shape, Picture, Field etc.
    Run (Inline derived) is a container for one or more text characters having the same character formatting.
  5. Let's add a second Paragraph with text using ContentRange class.
    The ContentRange recognizes the line feed «\n» character as a signal to create a new Paragraph.
    
        // Way 2 (easy): Add 2nd paragraph using ContentRange.
        dc.Content.End.Insert("\nThis is a first line in 2nd paragraph.", new CharacterFormat() { Size = 25, FontColor = Color.Blue, Bold = true });
        SpecialCharacter lBr = new SpecialCharacter(dc, SpecialCharacterType.LineBreak);
        dc.Content.End.Insert(lBr.Content);
        dc.Content.End.Insert("This is a second line.", new CharacterFormat() { Size = 20, FontColor = Color.DarkGreen, UnderlineStyle = UnderlineType.Single });
    
    ContentRange represents an area in document as a contiguous sequence of characters boundend by start and end positions. It allows to insert and extract data in a streaming manner in(from) desired positions.
  6. Save our document as file into DOCX format:
    
        // Save DOCX to a file
        dc.Save(@"d:\Result.docx", new DocxSaveOptions());
    

    or save to a MemoryStream:

    
                // Save DOCX to a MemoryStream
                using (MemoryStream docxStream = new MemoryStream())
                {
                    dc.Save(docxStream, new DocxSaveOptions());
                    // To do something with docxStream ...
                }
    

    As you notice, here we've explicitly specified DocxSaveOptions as the second parameter.

    Here you may find more details how to Save a document in DOCX format.

    Well done!

 

Complete code

using SautinSoft.Document;

namespace Example
{
    class Program
    {
        
        static void Main(string[] args)
        {
            CreateDocx();
        }
		
        /// <summary>
        /// Creates a new document and saves it into DOCX format.
        /// </summary>
        /// <remarks>
        /// Details: https://sautinsoft.com/products/document/examples/create-docx-document-net-csharp-vb.php
        /// </remarks>
        public static void CreateDocx()
        {
            // Set a path to our document.
            string docPath = @"Result.docx";

            // Let's create a simple document.
            DocumentCore dc = new DocumentCore();

            // Add new section.
            Section section = new Section(dc);
            dc.Sections.Add(section);

            // Let's set page size A4.
            section.PageSetup.PaperType = PaperType.A4;

            // Add two paragraphs using different ways:
            // Way 1: Add 1st paragraph.
            Paragraph par1 = new Paragraph(dc);
            par1.ParagraphFormat.Alignment = HorizontalAlignment.Center;
            section.Blocks.Add(par1);

            // Let's create a characterformat for text in the 1st paragraph.
            CharacterFormat cf = new CharacterFormat() { FontName = "Verdana", Size = 16, FontColor = Color.Orange };

            Run text1 = new Run(dc, "This is a first line in 1st paragraph!");
            text1.CharacterFormat = cf;
            par1.Inlines.Add(text1);

            // Let's add a line break into our paragraph.
            par1.Inlines.Add(new SpecialCharacter(dc, SpecialCharacterType.LineBreak));

            Run text2 = text1.Clone();
            text2.Text = "Let's type a second line.";
            par1.Inlines.Add(text2);

            // Way 2 (easy): Add 2nd paragraph using ContentRange.
            dc.Content.End.Insert("\nThis is a first line in 2nd paragraph.", new CharacterFormat() { Size = 25, FontColor = Color.Blue, Bold = true });
            SpecialCharacter lBr = new SpecialCharacter(dc, SpecialCharacterType.LineBreak);
            dc.Content.End.Insert(lBr.Content);
            dc.Content.End.Insert("This is a second line.", new CharacterFormat() { Size = 20, FontColor = Color.DarkGreen, UnderlineStyle = UnderlineType.Single });

            // Save a document to a file into DOCX format.
            dc.Save(docPath, new DocxSaveOptions());

            // Open the result for demonstation purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(docPath) { UseShellExecute = true });
        }
    }
}

Download.

        
            Imports SautinSoft.Document

Module Sample
    Sub Main()
        CreateDocx()
    End Sub

    ''' <summary>
    ''' Creates a new document and saves it into DOCX format.
    ''' </summary>
    ''' <remarks>
    ''' Details: https://sautinsoft.com/products/document/examples/create-docx-document-net-csharp-vb.php
    ''' </remarks>
    Sub CreateDocx()
        ' Set a path to our document.
        Dim docPath As String = "Result.docx"

        ' Let's create a simple document.
        Dim dc As New DocumentCore()

        ' Add new section.
        Dim section As New Section(dc)
        dc.Sections.Add(section)

        ' Let's set page size A4.
        section.PageSetup.PaperType = PaperType.A4

        ' Add two paragraphs using different ways:
        ' Way 1: Add 1st paragraph.
        Dim par1 As New Paragraph(dc)
        par1.ParagraphFormat.Alignment = HorizontalAlignment.Center
        section.Blocks.Add(par1)

        ' Let's create a characterformat for text in the 1st paragraph.
        Dim cf As New CharacterFormat() With {
                .FontName = "Verdana",
                .Size = 16,
                .FontColor = Color.Orange
            }

        Dim text1 As New Run(dc, "This is a first line in 1st paragraph!")
        text1.CharacterFormat = cf
        par1.Inlines.Add(text1)

        ' Let's add a line break into our paragraph.
        par1.Inlines.Add(New SpecialCharacter(dc, SpecialCharacterType.LineBreak))

        Dim text2 As Run = text1.Clone()
        text2.Text = "Let's type a second line."
        par1.Inlines.Add(text2)

        ' Way 2 (easy): Add 2nd paragraph using ContentRange.
        dc.Content.End.Insert(vbLf & "This is a first line in 2nd paragraph.", New CharacterFormat() With {
                .Size = 25,
                .FontColor = Color.Blue,
                .Bold = True
            })
        Dim lBr As New SpecialCharacter(dc, SpecialCharacterType.LineBreak)
        dc.Content.End.Insert(lBr.Content)
        dc.Content.End.Insert("This is a second line.", New CharacterFormat() With {
                .Size = 20,
                .FontColor = Color.DarkGreen,
                .UnderlineStyle = UnderlineType.Single
            })

        ' Save a document to a file into DOCX format.
        dc.Save(docPath, New DocxSaveOptions())

        ' Open the result for demonstation purposes.
        System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(docPath) With {.UseShellExecute = True})
    End Sub
End Module

Download.

© SautinSoft 2002 - 2018