/
ProtectionActions.cs
71 lines (61 loc) · 3.06 KB
/
ProtectionActions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
using DevExpress.Spreadsheet;
using System;
using System.Drawing;
namespace SpreadsheetControl_WPF_API_Part02
{
public static class ProtectionActions {
#region Actions
public static Action<IWorkbook> ProtectWorkbookAction = ProtectWorkbook;
public static Action<IWorkbook> ProtectWorksheetAction = ProtectWorksheet;
public static Action<IWorkbook> ProtectRangeAction = ProtectRange;
#endregion
static void ProtectWorkbook(IWorkbook workbook) {
#region #ProtectWorkbook
// Protect workbook structure (prevents users from adding or deleting worksheets
// or from displaying hidden worksheets)
workbook.BeginUpdate();
if (!workbook.IsProtected)
workbook.Protect("password", true, false);
workbook.Worksheets[0].Visible = false;
Worksheet worksheet = workbook.Worksheets[1];
worksheet["D5"].Value = "You are not allowed to add or delete a worksheet.";
worksheet["D6"].Value = "Hidden worksheets cannot be displayed.";
workbook.EndUpdate();
#endregion #ProtectWorkbook
}
static void ProtectWorksheet(IWorkbook workbook) {
#region #ProtectWorksheet
Worksheet worksheet = workbook.Worksheets[0];
// Prevent users from making changes to worksheet elements
if (!worksheet.IsProtected)
worksheet.Protect("password", WorksheetProtectionPermissions.Default);
workbook.BeginUpdate();
worksheet["C3:F8"].Borders.SetOutsideBorders(Color.Red, BorderLineStyle.Thin);
worksheet["D5:E6"].Merge();
worksheet["D5"].Value = "Try to change me!";
worksheet["D5"].Alignment.Vertical = SpreadsheetVerticalAlignment.Center;
workbook.EndUpdate();
#endregion #ProtectWorksheet
}
static void ProtectRange(IWorkbook workbook) {
#region #ProtectRange
workbook.BeginUpdate();
Worksheet worksheet = workbook.Worksheets[0];
worksheet["C3:E8"].Borders.SetAllBorders(Color.Black, BorderLineStyle.Thin);
// Give specific user permission to edit a range in a protected worksheet
ProtectedRange protectedRange = worksheet.ProtectedRanges.Add("My Range", worksheet["C3:E8"]);
EditRangePermission permission = new EditRangePermission();
permission.UserName = Environment.UserName;
permission.DomainName = Environment.UserDomainName;
permission.Deny = false;
protectedRange.SecurityDescriptor = protectedRange.CreateSecurityDescriptor(new EditRangePermission[] { permission });
protectedRange.SetPassword("123");
// Protect a worksheet
if (!worksheet.IsProtected)
worksheet.Protect("password", WorksheetProtectionPermissions.Default);
worksheet.ActiveView.ShowGridlines = false;
workbook.EndUpdate();
#endregion #ProtectRange
}
}
}