Наиболее распространенными и широко используемыми форматами файлов для обработки текстов являются 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);
                }
            }
        }
    }
}

Ниже приведен выходной документ, в котором все вхождения заменены с помощью приведенного выше кода.

отредактировал документ docx с помощью API редактора

Выходной документ - все вхождения заменены

Вывод

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

Для получения дополнительной информации, вариантов и примеров вы можете посетить документацию и репозиторий GitHub. По дополнительным вопросам обращайтесь в службу поддержки на форуме.

Статьи по Теме

Смотрите также