使用C#代码在Word文档中添加或删除可编辑区域

 更新时间:2025年11月18日 09:01:33   作者:2501_93070778  
在 Word 文档中添加可编辑区域的功能,可以帮助用户指定某些部分供他人编辑,同时保护文档的其他部分不被意外修改,本文将介绍如何在 C# 项目中使用 Spire.Doc for .NET 在 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();
        }
  }
}

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

申请临时许可证

如果您想从生成的文档中移除评估消息,或解除功能限制,可以联系官方销售申请一个 30 天的试用许可证。

到此这篇关于使用C#代码在Word文档中添加或删除可编辑区域的文章就介绍到这了,更多相关C# Word添加或删除可编辑区域内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#数据库操作的示例详解

    C#数据库操作的示例详解

    这篇文章主要通过一些示例为大家详细介绍了C#中数据库操作用法,文中的示例代码讲解详细,具有有一定的借鉴价值,需要的可以参考一下
    2022-07-07
  • C# 实现颜色渐变窗体控件详细讲解

    C# 实现颜色渐变窗体控件详细讲解

    这篇文章主要介绍了C# 实现颜色渐变窗体控件详细讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • c#中WinForm使用OpencvSharp4实现简易抓边

    c#中WinForm使用OpencvSharp4实现简易抓边

    本文主要介绍了c#中WinForm使用OpencvSharp4实现简易抓边,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • WinForm实现最小化到系统托盘方法实例详解

    WinForm实现最小化到系统托盘方法实例详解

    这篇文章主要介绍了WinForm实现最小化到系统托盘方法,实例分析了C#中实现WinForm最小化到系统托盘所需的相关控件与使用技巧,需要的朋友可以参考下
    2015-05-05
  • C#中静态构造函数的几点说明介绍

    C#中静态构造函数的几点说明介绍

    本篇文章主要是对C#中静态构造函数的几点说明进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • C#创建磁性窗体的实现方法

    C#创建磁性窗体的实现方法

    经常会遇到一种情况,即当拖动一个窗体(主窗体)时,其他窗体(子窗体)随着该窗体移动,当拖动子窗体时,其他窗体将不跟随移动,这就是磁性窗体,所以本文给大家介绍了C#创建磁性窗体的实现方法,需要的朋友可以参考下
    2024-04-04
  • 详解C# 虚方法virtual

    详解C# 虚方法virtual

    这篇文章主要介绍了C# 虚方法virtual的相关资料,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-04-04
  • C#实现Winform版计算器

    C#实现Winform版计算器

    这篇文章主要为大家详细介绍了C#实现Winform版计算器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • C#使用winform实现进度条效果

    C#使用winform实现进度条效果

    这篇文章主要为大家详细介绍了C#使用winform实现进度条效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • C# xmlSerializer简单用法示例

    C# xmlSerializer简单用法示例

    这篇文章主要介绍了C# xmlSerializer简单用法,结合实例形式分析了C#基于xmlSerializer操作xml的读取、输出等相关操作技巧,需要的朋友可以参考下
    2017-08-08

最新评论