最常見和廣泛使用的文字處理文件格式是 DOC、DOCX 和 ODT。著名的 Microsoft Word 和 OpenOffice Writer 都支持這些格式,我們通常使用這些格式來起草文檔。因此,作為開發人員,我們廣泛需要以編程方式在我們的應用程序中編輯 Word 文檔。在本文中,我們將討論如何使用 .NET API 進行文檔編輯,在 C# 中編輯 Word 文檔。

以下是本文簡要討論的主題:

用於 Word 文檔編輯和自動化的 .NET API

在本文中,我將在 C# 示例中使用 GroupDocs.Editor for .NET,它是文檔編輯 API,允許開發人員使用 WYSIWYG HTML 編輯器加載、編輯和保存各種文檔格式。除了文字處理文檔格式外,API 還支持編輯電子表格、演示文稿、HTML、XML、TXT、DSV、TSV 和 CSV 格式。

下載部分 下載 DLL 或 MSI 安裝程序,或通過 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 文檔中出現的所有單詞“文檔”替換為“已編輯文檔”。

    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 存儲庫。如需進一步查詢,請聯繫 論壇 上的支持人員。

相關文章

也可以看看