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

问题描述

我正在使用 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锁定单元认情况下,锁定单元不能解决我的问题;我唯一需要的是一个受保护的或只读的单元格,同时可以进行排序和允许过滤

任何帮助将不胜感激。

解决方法

您是否尝试过将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");

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...