Los formatos de archivo de procesamiento de textos más comunes y ampliamente utilizados son DOC, DOCX y ODT. Los famosos Microsoft Word y OpenOffice Writer admiten estos formatos y normalmente los usamos para redactar los documentos. Por lo tanto, como desarrollador, necesitamos editar documentos de Word en nuestras aplicaciones mediante programación. En este artículo, discutiremos cómo editar documentos de Word en C# usando la API de .NET para la edición de documentos.
Los siguientes son los temas tratados brevemente en este artículo:
.NET API para edición y automatización de documentos de Word
En este artículo, utilizaré GroupDocs.Editor for .NET en ejemplos de C#, que es la API de edición de documentos y permite a los desarrolladores cargar, editar y guardar varios formatos de documentos mediante editores HTML WYSIWYG. Además de los formatos de documentos de procesamiento de textos, la API admite la edición de hojas de cálculo, presentaciones, formatos HTML, XML, TXT, DSV, TSV y CSV.
Descargue el instalador DLL o MSI desde la sección de descargas o instale la API en su aplicación .NET a través de NuGet.
PM> Install-Package GroupDocs.Editor
Editar documentos de Word en C#
Justo después de configurar la API, puede pasar rápidamente a editar el documento de Word. Los siguientes pasos le permitirán editar el documento de procesamiento de texto.
- Cargue el documento de Word.
- Editar en consecuencia con las opciones.
- Guardar el documento editado.
Cargar el documento de Word
En primer lugar, cargue el documento proporcionando la ruta del documento y la contraseña, si el documento está protegido.
using (FileStream fs = File.OpenRead(inputFilePath))
{
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
}
Editar el documento de Word
Después de cargar, puede editar el documento cargado según sus requisitos. Aquí estoy reemplazando todas las apariciones de la palabra “documento” con el “documento editado” en un documento de Word usando el siguiente código 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");
}
}
Guarde el documento de Word editado con Opciones
Por último, mientras guarda el contenido del documento editado, puede configurar varias opciones. Estas opciones incluyen; configuración de paginación, configuración de contraseña, configuración regional, protección u optimización de memoria. Configuro las opciones anteriores en el código mencionado a continuación y guardo el documento editado como un archivo DOCX protegido por contraseña y de solo lectura.
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ódigo completo
Para su comodidad, muestro el ejemplo completo de C# que se explica arriba y edita el documento de Word y luego lo guarda en formato DOCX.
// Edite documentos de Word en C# utilizando la API de automatización y edición de documentos de GroupDocs
using (FileStream fs = File.OpenRead("filepath/document.docx"))
{ // Load Document
Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
loadOptions.Password = "password-if-any";
// Editar documento
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");
// Guardar documento
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);
}
}
}
}
}
El siguiente es el documento de salida en el que todas las ocurrencias se reemplazan usando el código anterior.
Conclusión
Para concluir, discutimos la edición de documentos de Word en C# usando la API de edición de documentos para aplicaciones .NET. Puede utilizar la API con editores WYSIWYG para la edición visual de sus documentos. Después de eso, puede seguir adelante para crear su propio editor de documentos. Del mismo modo, también puede integrar la función de edición dentro de su aplicación .NET.
Para obtener más detalles, opciones y ejemplos, puede visitar la documentación y el repositorio GitHub. Para más consultas, comuníquese con el soporte en el foro.