Os formatos de arquivo de processamento de texto mais comuns e amplamente usados são DOC, DOCX e ODT. O famoso Microsoft Word e OpenOffice Writer suportam esses formatos e normalmente usamos esses formatos para redigir os documentos. Portanto, como desenvolvedor, precisamos editar documentos do Word em nossos aplicativos programaticamente. Neste artigo, discutiremos como editar documentos do Word em C# usando a API .NET para edição de documentos.
A seguir estão os tópicos discutidos brevemente neste artigo:
.NET API para edição e automação de documentos do Word
Neste artigo, usarei GroupDocs.Editor for .NET em exemplos de C#, que é a API de edição de documentos e permite que os desenvolvedores carreguem, editem e salvem vários formatos de documentos usando editores HTML WYSIWYG. Além dos formatos de documentos de processamento de texto, a API suporta a edição de planilhas, apresentações, formatos HTML, XML, TXT, DSV, TSV e CSV.
Baixe o instalador DLLs ou MSI da seção de downloads ou instale a API em seu aplicativo .NET por meio de NuGet.
PM> Install-Package GroupDocs.Editor
Editar documentos do Word em C#
Logo após configurar a API, você pode avançar rapidamente para a edição do documento do Word. As etapas a seguir permitirão que você edite o documento de processamento de texto.
- Carregue o documento do Word.
- Edite de acordo com as opções.
- Salve o documento editado.
Carregar o documento do Word
Em primeiro lugar, carregue o documento fornecendo o caminho do documento e a senha, se o documento estiver protegido.
using (FileStream fs = File.OpenRead(inputFilePath))
{
    Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
    loadOptions.Password = "password-if-any";
}
Edite o documento do Word
Após o carregamento, você pode editar o documento carregado conforme sua necessidade. Aqui estou substituindo todas as ocorrências da palavra “documento” pelo “documento editado” em um documento do Word usando o código C# abaixo.
    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");
        }
    }
Salve o documento do Word Editado com Opções
Por fim, ao salvar o conteúdo do documento editado, você pode definir várias opções. Essas opções incluem; paginação, definir senha, localidade, proteção ou configurações de otimização de memória. Eu defino as opções acima no código abaixo mencionado e salvo o documento editado como um arquivo DOCX protegido por senha e somente leitura.
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 sua conveniência, estou mostrando o exemplo completo de C# explicado acima e ele edita o documento do Word e o salva no formato DOCX.
// Editar documento do Word em C# usando a API de automação e edição de documentos do 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");
            // Salvar 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);
                }
            }
        }
    }
}
A seguir está o documento de saída no qual todas as ocorrências são substituídas usando o código acima.
 
 Documento de saída - Todas as ocorrências são substituídas
Conclusão
Para concluir, discutimos a edição de documentos do Word em C# usando a API de edição de documentos para aplicativos .NET. Você pode usar a API com editores WYSIWYG para a edição visual de seus documentos. Depois disso, você pode seguir em frente para criar seu próprio editor de documentos. Da mesma forma, você também pode integrar o recurso de edição em seu aplicativo .NET.
Para mais detalhes, opções e exemplos, você pode visitar o repositório documentation e GitHub. Para mais dúvidas, entre em contato com o suporte no fórum.