最常见和广泛使用的文字处理文件格式是 DOCDOCXODT。著名的 Microsoft Word 和 OpenOffice Writer 支持这些格式,我们通常使用这些格式来起草文档。因此,作为开发人员,我们广泛需要在我们的应用程序中以编程方式编辑 Word 文档。在本文中,我们将讨论**如何使用 C# 编辑 Word 文档,使用 .NET API 进行文档编辑。

以下是本文简要讨论的主题:

用于 Word 文档编辑和自动化的 .NET API

在本文中,我将在 C# 示例中使用 GroupDocs.Editor for .NET,它是文档编辑 API,允许开发人员使用 WYSIWYG HTML 编辑器加载、编辑和保存各种文档格式。除了文字处理文档格式,API 还支持编辑电子表格、演示文稿、HTML、XML、TXT、DSV、TSV 和 CSV 格式。

下载部分 下载 DLLsMSI 安装程序,或通过 NuGet 在您的 .NET 应用程序中安装 API。

PM> Install-Package GroupDocs.Editor

在 C# 中编辑 Word 文档

设置 API 后,您可以快速开始编辑 Word 文档。以下步骤将让您编辑文字处理文档。

  • 加载 Word 文档。
  • 使用选项进行相应编辑。
  • 保存编辑的文档。

加载Word文档

首先,如果文档受到保护,请通过提供文档路径和密码来加载文档。

using (FileStream fs = File.OpenRead(inputFilePath))
{
    Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
    loadOptions.Password = "password-if-any";
}

编辑Word文档

加载后,您可以根据需要编辑加载的文档。在这里,我使用下面的 C# 代码将 Word 文档中所有出现的单词“document”替换为“edited document”。

    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");
        }
    }

使用选项保存编辑后的 Word 文档

最后,在保存编辑的文档内容的同时,您可以进一步设置各种选项。这些选项包括:分页、设置密码、区域设置、保护或内存优化设置。我在下面提到的代码中设置了上述选项,并将编辑后的文档保存为受密码保护的只读 DOCX 文件。

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# 示例,它编辑 Word 文档,然后将其保存为 DOCX 格式。

// 使用 GroupDocs 文档编辑和自动化 API 在 C# 中编辑 Word 文档
using (FileStream fs = File.OpenRead("filepath/document.docx"))
{   // Load Document
    Options.WordProcessingLoadOptions loadOptions = new WordProcessingLoadOptions();
    loadOptions.Password = "password-if-any";
    // 编辑文档
    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");
            // 保存文档
            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);
                }
            }
        }
    }
}

以下是使用上述代码替换所有匹配项的输出文档。

使用编辑器 API 编辑 docx 文档

输出文档 - 所有出现的地方都被替换

结论

最后,我们讨论了使用 .NET 应用程序的文档编辑 API 在 C# 中编辑 Word 文档。您可以将 API 与 WYSIWYG 编辑器一起使用,以对文档进行可视化编辑。之后,您可以继续构建自己的文档编辑器。同样,您也可以在 .NET 应用程序中集成编辑功能。

有关更多详细信息、选项和示例,您可以访问 文档GitHub 存储库。如需进一步查询,请联系 论坛 上的支持人员。

相关文章

也可以看看