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 para .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 docx editado usando a API do editor

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.

Artigos relacionados

Veja também