Najpopularniejszymi i najczęściej używanymi formatami plików edytorów tekstu są DOC, DOCX i ODT. Słynny Microsoft Word i OpenOffice Writer obsługują te formaty i zwykle używamy tych formatów do redagowania dokumentów. Dlatego jako programiści często musimy programowo edytować dokumenty Worda w naszych aplikacjach. W tym artykule omówimy, jak edytować dokumenty programu Word w języku C# przy użyciu interfejsu API platformy .NET do edycji dokumentów.

Oto tematy omówione pokrótce w tym artykule:

Interfejs API platformy .NET do edycji i automatyzacji dokumentów programu Word

W tym artykule będę używał GroupDocs.Editor for .NET w przykładach C#, który jest interfejsem API do edycji dokumentów i umożliwia programistom ładowanie, edytowanie i zapisywanie różnych formatów dokumentów za pomocą edytorów HTML typu WYSIWYG. Oprócz formatów dokumentów edytora tekstu interfejs API obsługuje edycję arkuszy kalkulacyjnych, prezentacji, formatów HTML, XML, TXT, DSV, TSV i CSV.

Pobierz instalator bibliotek DLL lub MSI z sekcji pobierania lub zainstaluj interfejs API w swojej aplikacji .NET za pośrednictwem NuGet.

PM> Install-Package GroupDocs.Editor

Edytuj dokumenty Worda w C#

Zaraz po skonfigurowaniu API możesz szybko przejść do edycji dokumentu Word. Poniższe kroki pozwolą ci edytować dokument edytora tekstu.

  • Załaduj dokument Worda.
  • Edytuj odpowiednio za pomocą opcji.
  • Zapisz edytowany dokument.

Załaduj dokument Worda

Najpierw załaduj dokument, podając ścieżkę dokumentu i hasło, jeśli dokument jest chroniony.

using (FileStream fs = File.OpenRead(inputFilePath))
{
    Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
    loadOptions.Password = "password-if-any";
}

Edytuj dokument Worda

Po załadowaniu możesz edytować załadowany dokument zgodnie z wymaganiami. Tutaj zastępuję wszystkie wystąpienia słowa „dokument” „edytowanym dokumentem” w dokumencie programu Word, używając poniższego kodu 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");
        }
    }

Zapisz edytowany dokument programu Word za pomocą opcji

Wreszcie, podczas zapisywania edytowanej treści dokumentu, możesz dodatkowo ustawić różne opcje. Opcje te obejmują; podział na strony, ustawić hasło, ustawienia regionalne, ochronę lub optymalizację pamięci. Ustawiam powyższe opcje w poniższym kodzie i zapisuję edytowany dokument jako chroniony hasłem plik DOCX tylko do odczytu.

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);
    }
}

Kompletny kod

Dla Twojej wygody pokazuję kompletny przykład C#, który został wyjaśniony powyżej i edytuje dokument Worda, a następnie zapisuje go w formacie DOCX.

// Edytuj dokument programu Word w języku C# przy użyciu interfejsu API do edycji dokumentów i automatyzacji GroupDocs
using (FileStream fs = File.OpenRead("filepath/document.docx"))
{   // Load Document
    Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
    loadOptions.Password = "password-if-any";
    // Edytuj dokument
    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");
            // Zapisz dokument
            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);
                }
            }
        }
    }
}

Poniżej znajduje się dokument wyjściowy, w którym wszystkie wystąpienia są zastępowane przy użyciu powyższego kodu.

edytowałem dokument docx za pomocą edytora API

Dokument wyjściowy — wszystkie wystąpienia są zastępowane

Wniosek

Na zakończenie omówiliśmy edytowanie dokumentów programu Word w języku C# przy użyciu interfejsu API edycji dokumentów dla aplikacji .NET. Możesz użyć API z edytorami WYSIWYG do wizualnej edycji swoich dokumentów. Następnie możesz przejść do tworzenia własnego edytora dokumentów. Podobnie możesz również zintegrować funkcję edycji w swojej aplikacji .NET.

Więcej informacji, opcji i przykładów można znaleźć w repozytorium documentation i GitHub. W przypadku dalszych pytań skontaktuj się z pomocą techniczną na forum.

Powiązane artykuły

Zobacz też