使用允许排序和允许自动筛选 C# 保护 Excel

Protect Excel With Allow Sort and Allow Auto Filter C#

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

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");

我找到的唯一方法是,在 Excel 锁定右键单击和复制粘贴选项的文档中使用 Visual Basic 代码。 不幸的是,在 excel 打开文档之前,它询问了一些关于危险脚本的信息,并提出禁用 运行 脚本。 我终于不可能了。