This demo uses the DevExpress Word Processing Document API to find and replace content in a document. You can process the predefined sample file or supply your own document. To do the latter, select Upload a File in the file selection drop-down menu.
Specify the search text and required operation. Enter the replacement text or highlight color, if necessary. Click the Modify Document and Save as... dropdown button to select the output format, apply changes, and download the result.
Select a Document
Sample.docx
using DevExpress.XtraRichEdit;
using DevExpress.XtraRichEdit.API.Native;
using System.Drawing;
Stream FindReplace(Stream inputStream, string findText, SearchOptions searchOptions, string replaceText, DocumentFormat outputFormat) {
using var wordProcessor = new RichEditDocumentServer();
// Load document
wordProcessor.LoadDocument(inputStream);
var document = wordProcessor.Document;
document.ReplaceAll(findText, replaceText, searchOptions);
var outputStream = new MemoryStream();
wordProcessor.SaveDocument(outputStream, outputFormat);
return outputStream;
}
Stream FindRemove(Stream inputStream, string findText, SearchOptions searchOptions, DocumentFormat outputFormat) {
using var wordProcessor = new RichEditDocumentServer();
// Load document
wordProcessor.LoadDocument(inputStream);
var document = wordProcessor.Document;
// Find all occurrences of the search text
DocumentRange[] searchResults = document.FindAll(findText, searchOptions);
// Remove found ranges
for (int i = searchResults.Length - 1; i >= 0; i--)
document.Delete(searchResults[i]);
var outputStream = new MemoryStream();
wordProcessor.SaveDocument(outputStream, outputFormat);
return outputStream;
}
Stream FindHighlight(Stream inputStream, string findText, SearchOptions searchOptions, Color highlightColor, DocumentFormat outputFormat) {
using var wordProcessor = new RichEditDocumentServer();
// Load document
wordProcessor.LoadDocument(inputStream);
var document = wordProcessor.Document;
// Find all occurrences of the search text
DocumentRange[] searchResults = document.FindAll(findText, searchOptions);
// Apply highlight color to found ranges
foreach (var range in searchResults) {
var charProps = document.BeginUpdateCharacters(range);
charProps.BackColor = highlightColor;
document.EndUpdateCharacters(charProps);
}
var outputStream = new MemoryStream();
wordProcessor.SaveDocument(outputStream, outputFormat);
return outputStream;
}