De meest voorkomende en meest gebruikte bestandsindelingen voor tekstverwerking zijn DOC, DOCX en ODT. De beroemde Microsoft Word en OpenOffice Writer ondersteunen deze formaten en normaal gesproken gebruiken we deze formaten voor het opstellen van de documenten. Daarom moeten we als ontwikkelaar op grote schaal Word-documenten in onze applicaties programmatisch bewerken. In dit artikel bespreken we hoe u Word-documenten in C# kunt bewerken met behulp van de .NET API voor het bewerken van documenten.
In dit artikel worden de volgende onderwerpen kort besproken:
.NET API voor het bewerken en automatiseren van Word-documenten
In dit artikel zal ik GroupDocs.Editor for .NET gebruiken in C#-voorbeelden, de documentbewerkings-API waarmee ontwikkelaars verschillende documentindelingen kunnen laden, bewerken en opslaan met behulp van WYSIWYG HTML-editors. Naast de documentindelingen voor tekstverwerking ondersteunt de API het bewerken van spreadsheets, presentaties, HTML-, XML-, TXT-, DSV-, TSV- en CSV-indelingen.
Download de DLL’s of het MSI-installatieprogramma van de downloadsectie of installeer de API in uw .NET-toepassing via NuGet.
PM> Install-Package GroupDocs.Editor
Bewerk Word-documenten in C#
Net na het instellen van de API, kunt u snel overgaan tot het bewerken van het Word-document. Met de volgende stappen kunt u het tekstverwerkingsdocument bewerken.
- Laad het Word-document.
- Bewerk dienovereenkomstig met opties.
- Sla het bewerkte document op.
Laad het Word-document
Laad eerst het document door het documentpad en het wachtwoord op te geven, als het document beveiligd is.
using (FileStream fs = File.OpenRead(inputFilePath))
{
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
}
Bewerk het Word-document
Na het laden kunt u het geladen document naar wens bewerken. Hier vervang ik alle keren dat het woord “document” voorkomt door het “bewerkte document” in een Word-document met behulp van de onderstaande C#-code.
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");
}
}
Sla het bewerkte Word-document op met Opties
Ten slotte kunt u tijdens het opslaan van de bewerkte documentinhoud verschillende opties instellen. Deze opties omvatten; instellingen voor paginering, wachtwoord instellen, locale, beveiliging of geheugenoptimalisatie. Ik stel de bovenstaande opties in de onderstaande code in en sla het bewerkte document op als een met een wachtwoord beveiligd en alleen-lezen DOCX-bestand.
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);
}
}
Volledige code
Voor uw gemak laat ik het volledige C#-voorbeeld zien dat hierboven is uitgelegd en het bewerkt het Word-document en slaat het vervolgens op in DOCX-indeling.
// Bewerk Word-document in C# met behulp van GroupDocs-API voor documentbewerking en automatisering
using (FileStream fs = File.OpenRead("filepath/document.docx"))
{ // Load Document
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
// Document bewerken
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");
// document opslaan
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);
}
}
}
}
}
Het volgende is het uitvoerdocument waarin alle voorkomens zijn vervangen met behulp van de bovenstaande code.
Conclusie
Tot slot bespraken we het bewerken van Word-documenten in C# met behulp van de documentbewerkings-API voor .NET-toepassingen. U kunt de API met WYSIWYG-editors gebruiken voor de visuele bewerking van uw documenten. Daarna kunt u verder gaan om uw eigen documenteditor te bouwen. Op dezelfde manier kunt u de bewerkingsfunctie ook integreren in uw .NET-toepassing.
Voor meer details, opties en voorbeelden kun je de documentation en de GitHub repository bezoeken. Neem voor verdere vragen contact op met de ondersteuning op het forum.