feat(excelio): allow DeleteRows on protected worksheets
Enable users to delete rows in protected Excel worksheets for better data management flexibility.
This commit is contained in:
@@ -18,6 +18,7 @@ public static class WorksheetProtector
|
|||||||
|
|
||||||
// Allow these operations
|
// Allow these operations
|
||||||
protection.AllowElement(XLSheetProtectionElements.DeleteColumns);
|
protection.AllowElement(XLSheetProtectionElements.DeleteColumns);
|
||||||
|
protection.AllowElement(XLSheetProtectionElements.DeleteRows);
|
||||||
protection.AllowElement(XLSheetProtectionElements.AutoFilter);
|
protection.AllowElement(XLSheetProtectionElements.AutoFilter);
|
||||||
protection.AllowElement(XLSheetProtectionElements.FormatCells);
|
protection.AllowElement(XLSheetProtectionElements.FormatCells);
|
||||||
protection.AllowElement(XLSheetProtectionElements.FormatColumns);
|
protection.AllowElement(XLSheetProtectionElements.FormatColumns);
|
||||||
@@ -26,8 +27,6 @@ public static class WorksheetProtector
|
|||||||
protection.AllowElement(XLSheetProtectionElements.SelectUnlockedCells);
|
protection.AllowElement(XLSheetProtectionElements.SelectUnlockedCells);
|
||||||
protection.AllowElement(XLSheetProtectionElements.EditObjects);
|
protection.AllowElement(XLSheetProtectionElements.EditObjects);
|
||||||
protection.AllowElement(XLSheetProtectionElements.Sort);
|
protection.AllowElement(XLSheetProtectionElements.Sort);
|
||||||
|
|
||||||
// Note: DeleteRows is NOT allowed (not in AllowElement call)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ public class WorksheetProtectorTests
|
|||||||
|
|
||||||
// Check that specified operations are allowed
|
// Check that specified operations are allowed
|
||||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteColumns).ShouldBeTrue();
|
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteColumns).ShouldBeTrue();
|
||||||
|
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteRows).ShouldBeTrue();
|
||||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.AutoFilter).ShouldBeTrue();
|
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.AutoFilter).ShouldBeTrue();
|
||||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatCells).ShouldBeTrue();
|
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatCells).ShouldBeTrue();
|
||||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatColumns).ShouldBeTrue();
|
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.FormatColumns).ShouldBeTrue();
|
||||||
@@ -39,15 +40,15 @@ public class WorksheetProtectorTests
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
public void ApplyProtection_DoesNotAllowDeleteRows()
|
public void ApplyProtection_AllowsDeleteRows()
|
||||||
{
|
{
|
||||||
using var workbook = new XLWorkbook();
|
using var workbook = new XLWorkbook();
|
||||||
var worksheet = workbook.Worksheets.Add("Test");
|
var worksheet = workbook.Worksheets.Add("Test");
|
||||||
|
|
||||||
WorksheetProtector.ApplyProtection(worksheet, "TestPassword");
|
WorksheetProtector.ApplyProtection(worksheet, "TestPassword");
|
||||||
|
|
||||||
// DeleteRows should NOT be allowed
|
// DeleteRows should be allowed
|
||||||
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteRows).ShouldBeFalse();
|
worksheet.Protection.AllowedElements.HasFlag(XLSheetProtectionElements.DeleteRows).ShouldBeTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|||||||
Reference in New Issue
Block a user