使用允许排序和允许自动过滤C#保护Excel

时间:2020-10-01 10:58:44

标签: c# asp.net excel epplus epplus-4

我正在使用 EPPLUS.dll 来完成我的Excel工作 我尝试使用 AllowSort AllowAutoFilter 属性来保护工作表,但是它不起作用。

worksheet.Protection.AllowSort = true;
worksheet.Protection.AllowAutoFilter = true;
worksheet.Protection.SetPassword("password");
worksheet.Protection.IsProtected = true;

我也尝试了“以下代码”,但没有得到想要的结果

worksheet.Column(1).Style.Locked = true;

Epplus锁定单元默认情况下,锁定单元不能解决我的问题;我唯一需要的是一个受保护的或只读的单元格,同时可以进行排序和允许过滤

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您是否尝试过将worksheet.Protection.IsProtected = true;移为代码块中的第一条语句。也许这覆盖了您以前的声明。

https://github.com/pruiz/EPPlus/blob/master/EPPlus/ExcelSheetProtection.cs

以下内容过去对我有用,因为它可以保护工作表,即使其只读。

        worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
        worksheet.Protection.IsProtected = true;
        worksheet.View.FreezePanes(2, 1); // freeze header row
        worksheet.Protection.AllowSort = true;
        worksheet.Cells[worksheet.Dimension.Address].AutoFilter = true;
        worksheet.Protection.AllowAutoFilter = true;

我认为要用密码保护它,它必须针对软件包而不是工作表。

因此,如果保存包,请使用.Save重载。

package.Save("password");

或者,如果要另存为ByteArray,则

package.GetAsByteArray("password");