Skip to end of metadata
Go to start of metadata
Icon

We recommend that you read about Word file representation in WordApplication before reading this article.

How WordApplication inserts elements

Each of the elements listed in the document tree structure inherit from the Element class, which provides most of the methods for inserting new elements into a document. WordApplication will allow you to call any Insert method on almost any type of element, but the behavior of that method will change depending on what type of element the method is called on and what type of element the method is inserting

For example:

To further illustrate this point, we will examine calling InsertTextAfter on a Section:

Example: Calling InsertCharacterRunAfter on a Section

This example shows the behavior of WordWriter when inserting an element two levels deeper than the current element.

A CharacterRun must be the child of a Paragraph, but InsertTextAfter can be called on a Section. In this case, a new CharacterRun will be inserted at the end of the last Paragraph in the Section.

 

 

To achieve the most predictable behavior, it is recommended practice to call a Create or Insert method on an object appropriate to what is being inserted.

So, for example, instead of calling InsertTextAfter on a Section object as described above, it should be called on a Paragraph, ListEntry, or Field contents.

 

Here is an example Word document before running either of the code samples above:

List of Insert Behaviors

The following table lists some common examples of how WordWriter behaves when a Create or Insert method is called on different elements.

Each column represents the following:

  • Parent element: Element on which InsertXBefore or InsertXAfter is called.

  • Element to be inserted: Type of element which is being inserted. Use the appropriate InsertXBefore or InsertXAfter for this type.

  • InsertXBefore Behavior: What the InsertXBefore method does in this case.

  • InsertXAfter Behavior: What the InsertXAfter method does in this case.

Notes:

 

Parent ElementElement to be insertedInsertXBefore BehaviorInsertXAfter Behavior
DocumentSectionNew Section is inserted before existing Sections.

New [[Section] is inserted after existing Sections.

 Document Paragraph, List, or Table

Element is inserted in the first Section of the Document before any existing elements in that Section.

Element is inserted in the last Section of the Document after any existing elements in that Section.

 DocumentCharacterRun, InlineImage, Hyperlink, or MergeField

Element is inserted in the first element ( Paragraph ,  List , or  Table ) of the first  Section  of the  Document  before any existing elements in that first element.

Element is inserted in the last element ( Paragraph ,  List , or  Table ) of the last Section  of the  Document  after any existing elements in that last element.

Section 

 Section 

New Section is inserted before the current Section.

New Section is inserted after the current Section.

Section CharacterRun , InlineImage, Hyperlink, or MergeFieldElement is inserted in the first element ( Paragraph ,  List , or  Table ) of this  Section  of the  Document  before any existing elements in that first element.Element is inserted in the last element ( Paragraph ,  List , or  Table ) of this  Section  of the  Document  before any existing elements in that last element.
List  List 

New List is inserted before the current List.

New List is inserted after the current List.

  List CharacterRun , InlineImage, Hyperlink, or MergeField

Element is inserted in the first ListEntry of the List before any existing elements in that ListEntry.

Element is inserted in the last ListEntry of the List after any existing elements in that ListEntry.

TableTable 

Table is inserted in the first TableCell of the current Table before any existing elements in that TableCell.

There is currently an issue with this behavior. New rows are appended to the current Table instead of being added to a new Table.

Table  Paragraph Paragraph is inserted in the first TableCell of the current Table before any existing elements in that TableCell.Paragraph is inserted after the Table.
Table List List is inserted before the Table. There is currently an issue with this behavior.List is inserted after the Table and appears as a TableCell.
Table CharacterRun , InlineImage, Hyperlink, or MergeField

Element is inserted in the first element (Paragraph, List, or Table) of the first TableCell of the Table before any existing elements in that first element.

Element is inserted in the next element (Paragraph, List, or Table) after the Table, after any existing elements in that next element.

 

 

  • No labels