Back to Devexpress

How to: Replace a Placeholder with a Document Element

officefileapi-404369-word-processing-document-api-examples-search-and-replace-how-to-replace-a-placeholder-with-a-document-element.md

latest8.2 KB
Original Source

How to: Replace a Placeholder with a Document Element

  • Feb 21, 2025
  • 3 minutes to read

The following example describes how to insert a placeholder and replace it with the document element (table, image or text). You can use one the following elements as placeholders:

  • Keywords
  • Bookmarks
  • Document fields
  • Pictures (to replace with another pictures)

Search and Replace Keywords

Replace Keyword with Plain Text

The SubDocument.Replace method allows you to replace the specified text. The code sample below replaces the “PARTNER” keyword with an actual name:

csharp
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;

using (var wordProcessor = new RichEditDocumentServer())
{
    Document document = wordProcessor.Document;
    document.LoadDocument(@"C:\Docs\Doc1.docx");
    document.ReplaceAll("PARTNER", "Nancy Davolio", SearchOptions.WholeWord);
    wordProcessor.SaveDocument("updated.docx", DocumentFormat.Docx);
}
vb
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraRichEdit.API.Native

Using wordProcessor = New RichEditDocumentServer()
    Dim document As Document = wordProcessor.Document
    document.LoadDocument("C:\Docs\Doc1.docx")
    document.ReplaceAll("PARTNER", "Nancy Davolio", SearchOptions.WholeWord)
    wordProcessor.SaveDocument("updated.docx", DocumentFormat.Docx)
End Using

Replace Keyword with Formatted Content

Call the SubDocument.FindAll method to search all keyword entries. The method returns an array of DocumentRange objects. Use the DocumentRange.Start property to retrieve the start position of the required entry. The SubDocument.Delete method allows you to remove the keyword. You can use the following methods to insert text at the keyword’s position:

The code sample below searches for the “INSERT HERE” keyword and replaces it with content from another document:

csharp
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;

using (var wordProcessor = new RichEditDocumentServer())
{
    Document document = wordProcessor.Document;
    document.LoadDocument(@"C:\Docs\Doc1.docx");
    var keywords = document.FindAll("INSERT HERE",SearchOptions.WholeWord);
    DocumentPosition insertPosition = keywords[0].Start;
    document.Delete(keywords[0]);
    document.InsertDocumentContent(insertPosition, @"C:\Docs\Word (RTF) Document API for NET.docx");
    wordProcessor.SaveDocument("updated.docx", DocumentFormat.Docx);
}
vb
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraRichEdit.API.Native

Using wordProcessor = New RichEditDocumentServer()
    Dim document As Document = wordProcessor.Document
    document.LoadDocument("C:\Docs\Doc1.docx")
    Dim keywords = document.FindAll("INSERT HERE",SearchOptions.WholeWord)
    Dim insertPosition As DocumentPosition = keywords(0).Start
    document.Delete(keywords(0))
    document.InsertDocumentContent(insertPosition, "C:\Docs\Word (RTF) Document API for NET.docx")
    wordProcessor.SaveDocument("updated.docx", DocumentFormat.Docx)
End Using

Replace a Bookmark with Text

Call the BookmarkCollection.Create method to insert a bookmark at the specified position in a document. The BookmarkCollection.Item property allows you to retrieve a bookmark by its name. Use the Bookmark.Range property to get the start position of the bookmark’s range. Call the BookmarkCollection.Remove method to remove the bookmark. To insert text at the bookmark’s position, use one of the methods mentioned above.

The code sample below shows how to replace a bookmark with rich-formatted text:

csharp
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;

using (var wordProcessor = new RichEditDocumentServer())
{
    wordProcessor.LoadDocument(@"C:\\Docs\\Doc_bookmark.docx");
    // Find the bookmark by its name
    Bookmark bookmark = wordProcessor.Document.Bookmarks["replace"];

    // Retrieve the bookmark's start position
    DocumentPosition position = bookmark.Range.Start;

    // Remove the bookmark
    wordProcessor.Document.Bookmarks.Remove(bookmark);

    // Specify the RTF string to insert
    string rtfString = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1049
{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}
{\f1\fswiss\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue255;}
\viewkind4\uc1\pard\cf1\lang1033\b\f0\fs32 Test.\cf0\b0\f1\fs20\par}";

    // Insert text at the retrieved position
    wordProcessor.Document.InsertRtfText(position, rtfString);

    // Save the resulting document
    wordProcessor.SaveDocument("bookmark-replaced.docx", DocumentFormat.Docx);
}
vb
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraRichEdit.API.Native

Using wordProcessor = New RichEditDocumentServer()
    wordProcessor.LoadDocument("C:\\Docs\\Doc_bookmark.docx")
    Dim bookmark As Bookmark = wordProcessor.Document.Bookmarks("replace")

    Dim position As DocumentPosition = bookmark.Range.Start
    wordProcessor.Document.Bookmarks.Remove(bookmark)

    Dim rtfString As String = "{\rtf1\ansi\ansicpg1252\deff0\deflang1049
{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}
{\f1\fswiss\fcharset0 Arial;}}
{\colortbl ;\red0\green0\blue255;}
\viewkind4\uc1\pard\cf1\lang1033\b\f0\fs32 Test.\cf0\b0\f1\fs20\par}"
    wordProcessor.Document.InsertRtfText(position, rtfString)
    wordProcessor.SaveDocument("bookmark-replaced.docx", DocumentFormat.Docx)
End Using

Replace a Field with a Document Element

Use DOCVARIABLE, MERGEFIELD or DOCPROPERTY fields to insert formatted content or plain text. Refer to the following articles for more information:

Replace an Image with Another Image

You can use the PictureFormat.SetPicture method to replace an image with another image. Refer to the following article for more information: How to: Replace a Picture with Another Picture