The purpose of the following method is to style and protect a worksheet after data has been written to it with Epplus. The styling is correct, and the appropriate cells (in a particular row) are protected. It is designed to allow sorting and filtering despite the fact that the "header" row cells are protected.
In the generated spreadsheet, Excel allows filtering to be performed. However, sorting is met with an error message. How to solve this?
public void format_spreadsheet(ExcelWorksheet worksheet)
{
ExcelRange range;
// styling header cells...
// protect headers and allow sorting and filtering, amongst other things
worksheet.Protection.IsProtected = true;
worksheet.Protection.AllowAutoFilter = true;
worksheet.Protection.AllowDeleteColumns = false;
worksheet.Protection.AllowDeleteRows = true;
worksheet.Protection.AllowEditObject = true;
worksheet.Protection.AllowEditScenarios = true;
worksheet.Protection.AllowFormatCells = true;
worksheet.Protection.AllowFormatColumns = true;
worksheet.Protection.AllowFormatRows = true;
worksheet.Protection.AllowInsertColumns = false;
worksheet.Protection.AllowInsertHyperlinks = false;
worksheet.Protection.AllowInsertRows = true;
worksheet.Protection.AllowPivotTables = false;
worksheet.Protection.AllowSelectLockedCells = true;
worksheet.Protection.AllowSelectUnlockedCells = true;
worksheet.Protection.AllowSort = true;
// set a random password so it's impossible for anybody to edit the protected cells...
// autofit columns
range = worksheet.Cells[1, 1, worksheet.Dimension.End.Row, lastHeaderCol];
range.AutoFitColumns();
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…