博客 / 詳情

返回

如何使用C#代碼在 Word 文檔中添加或刪除可編輯區域

在 Word 文檔中添加可編輯區域的功能,可以幫助用户指定某些部分供他人編輯,同時保護文檔的其他部分不被意外修改。這在協作文檔、文檔審閲和添加評論等場景中尤其有用。另一方面,刪除可編輯區域的功能,則可以在特定部分不再需要編輯時,將文檔恢復為只讀狀態,從而確保文檔內容的完整性和安全性。本文將介紹如何在 C# 項目中使用 Spire.Doc for .NET 在 Word 文檔中添加或刪除可編輯區域。

安裝 Spire.Doc for .NET

首先,您需要將 Spire.Doc for .NET 包中包含的 DLL 文件添加為 .NET 項目的引用。這些 DLL 文件可以通過以下鏈接下載,或者通過 NuGet 進行安裝。

PM> Install-Package Spire.Doc

在 C# 中向 Word 文檔添加可編輯區域

在 Word 文檔中添加可編輯區域的步驟包括:在文檔中插入 PermissionStart 和 PermissionEnd 對象,並將文檔設置為只讀保護模式,以確保指定區域內的內容可編輯,而文檔的其他部分保持只讀。

示例代碼如下:

using Spire.Doc;
using Spire.Doc.Documents;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //創建一個新的文檔對象
            Document document = new Document();

            //從指定路徑加載文檔
            document.LoadFromFile("Sample1.docx");

            //獲取文檔的第一個節
            Section section = document.Sections[0];

            //創建一個權限開始對象
            PermissionStart permissionStart = new PermissionStart(document, "restricted1");

            //創建一個權限結束對象
            PermissionEnd permissionEnd = new PermissionEnd(document, "restricted1");

            //獲取該節中的第二段
            Paragraph paragraph = section.Paragraphs[1];

            //在段落開頭插入權限開始對象
            paragraph.ChildObjects.Insert(0, permissionStart);

            //在段落末尾添加權限結束對象
            paragraph.ChildObjects.Add(permissionEnd);

            //將文檔設置為只讀保護
            document.Protect(ProtectionType.AllowOnlyReading, "123456");

            //將修改後的文檔保存到指定路徑
            document.SaveToFile("AddedEditingPermissionsArea.docx", FileFormat.Docx);

            //關閉文檔並釋放文檔對象佔用的資源
            document.Close();
            document.Dispose();
        }
  }
}

中刪除 Word 文檔中的可編輯區域

從 Word 文檔中刪除可編輯區域的關鍵步驟包括:遍歷文檔中的每個段落,並移除其中的 PermissionStart 和 PermissionEnd 對象。

代碼如下:

using Spire.Doc;
using Spire.Doc.Documents;

namespace SpireDocDemo
{
    internal class Program
    {
        static void Main(string[] args)
        {
             //創建一個新的文檔對象
            Document document = new Document();

            //從指定路徑加載文檔
            document.LoadFromFile("Sample2.docx");

            //遍歷文檔的各個節
            for (int a = 0; a < document.Sections.Count; a++)
            {
                //獲取當前節的正文
                Body body = document.Sections[a].Body;

                //遍歷正文中的子對象
                for (int i = 0; i < body.ChildObjects.Count; i++)
                {
                    //檢查子對象是否為段落
                    if (body.ChildObjects[i] is Paragraph)
                    {
                        //獲取當前段落
                        Paragraph paragraph = (Paragraph)body.ChildObjects[i];

                        //從段落的最後一個子對象開始向前遍歷
                        for (int j = paragraph.ChildObjects.Count - 1; j >= 0; j--)
                        {
                            //獲取當前子對象
                            DocumentObject documentObject = paragraph.ChildObjects[j];

                            //如果是權限開始對象,移除它
                            if (documentObject.DocumentObjectType == DocumentObjectType.PermissionStart)
                            {
                                paragraph.ChildObjects.RemoveAt(j);
                            }
                            //如果是權限結束對象,移除它
                            else if (documentObject.DocumentObjectType == DocumentObjectType.PermissionEnd)
                            {
                                paragraph.ChildObjects.RemoveAt(j);
                            }
                        }
                    }
                }
            }

            //將修改後的文檔保存到指定路徑
            document.SaveToFile("RemovedEditingPermissionsArea.docx", FileFormat.Docx);

            //關閉文檔並釋放文檔對象佔用的資源
            document.Close();
            document.Dispose();
        }
    }
}
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.