Previous topicNext topic
Help > 开发指南 > Excel > API > 示例 > 保护 >
如何:保护特定的工作表区域

此示例演示如何为经过身份验证的用户解锁受保护工作表中的特定范围。

ProtectedRangeCollection 集合(可使用 Worksheet.ProtectedRanges 属性访问)包含可为提供所需凭据的用户解锁的范围。可以通过以下方式之一对用户进行身份验证。

用户帐户身份验证

使用运行应用程序的用户帐户的身份验证。身份验证本身由 Windows 基于依赖于域安全性的标准安全机制执行。

要解锁特定用户或用户组的范围,请执行以下步骤。

  1. 为每个用户或组创建一个 EditRangePermission 对象。
  2. 使用 ProtectedRange.CreateSecurityDescriptor 方法将权限列表转换为安全描述符。
  3. 使用 ProtectedRange.SecurityDescriptor 属性将创建的安全描述符分配给范围。

密码身份验证

若要指定范围的密码,请使用 ProtectedRange.SetPassword 方法。尝试编辑范围时,系统将提示用户输入密码。

下面的代码示例演示了这两种方法。

Vb.Net
'创建一个Workbook工作簿对象.
Dim workbook As New DevExpress.Spreadsheet.Workbook()
Dim worksheet As DevExpress.Spreadsheet.Worksheet = workbook.Worksheets("ProtectionSample")
workbook.Worksheets.ActiveWorksheet = worksheet

worksheet("B2:J5").Borders.SetOutsideBorders(Color.Red, DevExpress.Spreadsheet.BorderLineStyle.Thin)

'指定用户在受保护工作表中编辑区域的权限。
Dim protectedRange As DevExpress.Spreadsheet.ProtectedRange = worksheet.ProtectedRanges.Add("My Range", worksheet("B2:J5"))
Dim permission As New DevExpress.Spreadsheet.EditRangePermission()
'用户名称,针对哪个用户
permission.UserName = Environment.UserName
'域名称
permission.DomainName = Environment.UserDomainName
'是否拒绝
permission.Deny = False
'设置保护区域的权限
protectedRange.SecurityDescriptor = protectedRange.CreateSecurityDescriptor(New DevExpress.Spreadsheet.EditRangePermission() { permission })
'设置保护密码
protectedRange.SetPassword("123")
'保护工作簿
If Not worksheet.IsProtected Then
    worksheet.Protect("password", DevExpress.Spreadsheet.WorksheetProtectionPermissions.Default)
End If
'添加一个备注信息
worksheet("B2").Value = "This cell range is protected with a password. " & ControlChars.Lf & " You cannot edit or format it until protection is removed." & ControlChars.Lf & "To remove protection, double-click the range and enter ""123""."
worksheet.Visible = True

C#
// 创建一个Workbook工作簿对象.
DevExpress.Spreadsheet.Workbook workbook = new DevExpress.Spreadsheet.Workbook();
DevExpress.Spreadsheet.Worksheet worksheet = workbook.Worksheets["ProtectionSample"];
workbook.Worksheets.ActiveWorksheet = worksheet;

worksheet["B2:J5"].Borders.SetOutsideBorders(Color.Red, DevExpress.Spreadsheet.BorderLineStyle.Thin);

// 指定用户在受保护工作表中编辑区域的权限。
DevExpress.Spreadsheet.ProtectedRange protectedRange = worksheet.ProtectedRanges.Add("My Range", worksheet["B2:J5"]);
DevExpress.Spreadsheet.EditRangePermission permission = new DevExpress.Spreadsheet.EditRangePermission();
// 用户名称,针对哪个用户
permission.UserName = Environment.UserName;
// 域名称
permission.DomainName = Environment.UserDomainName;
// 是否拒绝
permission.Deny = false;
// 设置保护区域的权限
protectedRange.SecurityDescriptor = protectedRange.CreateSecurityDescriptor(new DevExpress.Spreadsheet.EditRangePermission[] { permission });
// 设置保护密码
protectedRange.SetPassword("123");
// 保护工作簿
if (!worksheet.IsProtected)
    worksheet.Protect("password", DevExpress.Spreadsheet.WorksheetProtectionPermissions.Default);
// 添加一个备注信息
worksheet["B2"].Value = "This cell range is protected with a password. \n You cannot edit or format it until protection is removed. \n To remove protection, double-click the range and enter \"123\".";
worksheet.Visible = true;