Наиболее распространенными и широко используемыми форматами файлов для обработки текстов являются DOC, DOCX и ODT. Известные Microsoft Word и OpenOffice Writer поддерживают эти форматы, и мы обычно используем эти форматы для составления документов. Поэтому нам, как разработчикам, необходимо программно редактировать документы Word в наших приложениях. В этой статье мы обсудим, как редактировать документы Word на C#, используя .NET API для редактирования документов.
В этой статье кратко обсуждаются следующие темы:
.NET API для редактирования и автоматизации документов Word
В этой статье я буду использовать GroupDocs.Editor for .NET в примерах C#, который представляет собой API редактирования документов и позволяет разработчикам загружать, редактировать и сохранять различные форматы документов с помощью HTML-редакторов WYSIWYG. Помимо форматов документов для обработки текстов, API поддерживает редактирование электронных таблиц, презентаций, форматов HTML, XML, TXT, DSV, TSV и CSV.
Загрузите установщик DLL или MSI из раздела загрузок или установите API в свое приложение .NET с помощью NuGet.
PM> Install-Package GroupDocs.Editor
Редактировать документы Word в C#
Сразу после настройки API вы можете быстро перейти к редактированию документа Word. Следующие шаги позволят вам отредактировать текстовый документ.
- Загрузите документ Word.
- Отредактируйте соответственно с опциями.
- Сохраните отредактированный документ.
Загрузите документ Word
Во-первых, загрузите документ, указав путь к документу и пароль, если документ защищен.
using (FileStream fs = File.OpenRead(inputFilePath))
{
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
}
Редактировать документ Word
После загрузки вы можете редактировать загруженный документ в соответствии с вашими требованиями. Здесь я заменяю все вхождения слова «документ» на «отредактированный документ» в документе Word, используя приведенный ниже код C#.
using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))
{
Options.WordProcessingEditOptions editOptions = new WordProcessingEditOptions();
editOptions.FontExtraction = FontExtractionOptions.ExtractEmbeddedWithoutSystem;
editOptions.EnableLanguageInformation = true;
editOptions.EnablePagination = true;
using (EditableDocument beforeEdit = editor.Edit(editOptions))
{
string originalContent = beforeEdit.GetContent();
List<IHtmlResource> allResources = beforeEdit.AllResources;
string editedContent = originalContent.Replace("document", "edited document");
}
}
Сохраните отредактированный документ Word с параметрами
Наконец, при сохранении отредактированного содержимого документа вы можете установить различные параметры. Эти варианты включают в себя; нумерация страниц, установка пароля, локаль, защита или параметры оптимизации памяти. Я устанавливаю вышеуказанные параметры в приведенном ниже коде и сохраняю отредактированный документ как защищенный паролем и доступный только для чтения файл DOCX.
using (EditableDocument afterEdit = EditableDocument.FromMarkup(editedContent, allResources))
{
Options.WordProcessingSaveOptions saveOptions = new WordProcessingSaveOptions(WordProcessingFormats.Docx);
saveOptions.EnablePagination = true;
saveOptions.Locale = System.Globalization.CultureInfo.GetCultureInfo("en-US");
saveOptions.OptimizeMemoryUsage = true;
saveOptions.Password = "password";
saveOptions.Protection = new WordProcessingProtection(WordProcessingProtectionType.ReadOnly, "write\_password");
using (FileStream outputStream = File.Create("filepath/editedDocument.docx"))
{
editor.Save(afterEdit, outputStream, saveOptions);
}
}
Полный код
Для вашего удобства я показываю полный пример C#, описанный выше, и он редактирует документ Word, а затем сохраняет его в формате DOCX.
// Редактировать документ Word на C# с помощью API редактирования и автоматизации документов GroupDocs
using (FileStream fs = File.OpenRead("filepath/document.docx"))
{ // Load Document
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
// Редактировать документ
using (Editor editor = new Editor(delegate { return fs; }, delegate { return loadOptions; }))
{
Options.WordProcessingEditOptions editOptions = new WordProcessingEditOptions();
editOptions.FontExtraction = FontExtractionOptions.ExtractEmbeddedWithoutSystem;
editOptions.EnableLanguageInformation = true;
editOptions.EnablePagination = true;
using (EditableDocument beforeEdit = editor.Edit(editOptions))
{
string originalContent = beforeEdit.GetContent();
List<IHtmlResource> allResources = beforeEdit.AllResources;
string editedContent = originalContent.Replace("document", "edited document");
// Сохранить документ
using (EditableDocument afterEdit = EditableDocument.FromMarkup(editedContent, allResources))
{
WordProcessingFormats docxFormat = WordProcessingFormats.Docx;
Options.WordProcessingSaveOptions saveOptions = new WordProcessingSaveOptions(docxFormat);
saveOptions.EnablePagination = true;
saveOptions.Locale = System.Globalization.CultureInfo.GetCultureInfo("en-US");
saveOptions.OptimizeMemoryUsage = true;
saveOptions.Password = "password";
saveOptions.Protection = new WordProcessingProtection(WordProcessingProtectionType.ReadOnly, "write_password");
using (FileStream outputStream = File.Create("filepath/editedDocument.docx"))
{
editor.Save(afterEdit, outputStream, saveOptions);
}
}
}
}
}
Ниже приведен выходной документ, в котором все вхождения заменены с помощью приведенного выше кода.

Выходной документ - все вхождения заменены
Вывод
В заключение мы обсудили редактирование документов Word на C# с использованием API редактирования документов для приложений .NET. Вы можете использовать API с редакторами WYSIWYG для визуального редактирования ваших документов. После этого вы можете перейти к созданию собственного редактора документов. Точно так же вы также можете интегрировать функцию редактирования в свое приложение .NET.
Для получения дополнительной информации, вариантов и примеров вы можете посетить документацию и репозиторий GitHub. По дополнительным вопросам обращайтесь в службу поддержки на форуме.