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.
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.