How to Insert Text to Word at Exact Position in C#, VB.NET

One of our customers has a requirement to insert text to a Word document in an exact location (horizontal and vertical coordinates). Generally, people position text in a Word document by using other tools such as tables and text boxes, since the positioning of tables and text boxes is much easier to control. In this article, we'll introduce how to position text in Word through text box in C#, VB.NET.

Firstly download Spire.Doc for .NET and reference the dll file to your project. Before we start to code, we also need following namespaces to be extra added.

using System.Drawing;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Formatting;

Code Snippet:

Step 1: Create a new Word document, add a section for it, and then add a paragraph on the section.

Document doc = new Document();
Section sec = doc.AddSection();
Paragraph par = sec.AddParagraph();

Step 2: Append a new text box to the paragraph. Here we logically set VerticalOrigin and HorizontalOrigin as Margin because horizontal and vertical coordinate is a relative value to his reference object. By giving the variable VerticalPosition and HorizontalPosition a certain value, the text box will be fixed at the position.

TextBox textBox = par.AppendTextBox(180, 30);
textBox.Format.VerticalOrigin = VerticalOrigin.Margin;
textBox.Format.VerticalPosition = 100;
textBox.Format.HorizontalOrigin = HorizontalOrigin.Margin;
textBox.Format.HorizontalPosition = 50;
textBox.Format.NoLine = true;

Step 3: Define a new format style.

CharacterFormat format = new CharacterFormat(doc);
format.FontName = "Calibri";
format.FontSize = 15;
format.Bold = true;

Step 4: Add text to text box, and apply the preset format to the text.

Paragraph par1 = textBox.Body.AddParagraph();
par1.AppendText("This is my new string").ApplyCharacterFormat(format);

Step 5: Save the file.

doc.SaveToFile("result.docx", FileFormat.Docx);

Result:

The border line of text box has been set as invisible, therefore we only see the text being added at the specified horizontal and vertical coordinates.

How to Insert Text to Word at Exact Position in C#, VB.NET

Full Code:

[C#]
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using Spire.Doc.Formatting;
using System.Collections.Generic;
namespace InsertText
{

    class Program
    {
        static void Main(string[] args)
        {
            Document doc = new Document();
            Section sec = doc.AddSection();
            Paragraph par = sec.AddParagraph();

            TextBox textBox = par.AppendTextBox(180, 30);
            textBox.Format.VerticalOrigin = VerticalOrigin.Margin;
            textBox.Format.VerticalPosition = 100;
            textBox.Format.HorizontalOrigin = HorizontalOrigin.Margin;
            textBox.Format.HorizontalPosition = 50;
            textBox.Format.NoLine = true;

            CharacterFormat format = new CharacterFormat(doc);
            format.FontName = "Calibri";
            format.FontSize = 15;
            format.Bold = true;

            Paragraph par1 = textBox.Body.AddParagraph();
            par1.AppendText("This is my new string").ApplyCharacterFormat(format);
            doc.SaveToFile("result.docx", FileFormat.Docx);
        }
    }
}
[VB.NET]
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports Spire.Doc.Formatting
Imports System.Collections.Generic
Namespace InsertText

	Class Program
		Private Shared Sub Main(args As String())
			Dim doc As New Document()
			Dim sec As Section = doc.AddSection()
			Dim par As Paragraph = sec.AddParagraph()

			Dim textBox As TextBox = par.AppendTextBox(180, 30)
			textBox.Format.VerticalOrigin = VerticalOrigin.Margin
			textBox.Format.VerticalPosition = 100
			textBox.Format.HorizontalOrigin = HorizontalOrigin.Margin
			textBox.Format.HorizontalPosition = 50
			textBox.Format.NoLine = True

			Dim format As New CharacterFormat(doc)
			format.FontName = "Calibri"
			format.FontSize = 15
			format.Bold = True

			Dim par1 As Paragraph = textBox.Body.AddParagraph()
			par1.AppendText("This is my new string").ApplyCharacterFormat(format)
			doc.SaveToFile("result.docx", FileFormat.Docx)
		End Sub
	End Class
End Namespace